簡體   English   中英

MySQL中使用utf8的列的字符串值不正確

[英]Incorrect string value for column in MySQL with utf8

在MySQL工作台上運行以下查詢失敗,並顯示不正確的字符串值錯誤。

insert into mytable (key) values (0x8080808080) gives me below error:
Error Code: 1366. Incorrect string value: '\x80\x80\x80\x80\x80' for column      'key' at row 1

列數據類型定義為char(5),它使用表的默認字符集/排序規則,即“ utf8-默認排序規則”。 該查詢無法插入0x7F以上的任何字符值。

我想了解為什么它無法插入0x7F以上的值。 如果我將字符集/排序規則類型更改為latin1_ _ ,那么直到字符0xFF都可以正常工作。

該查詢無法插入0x7F以上的任何字符值。

無法插入高於0x7F的字節值。 如果要插入字符 U + 0080,則必須將其編碼為UTF-8序列0xC280 這些字節高於0x7F,但將插入OK,因為它是有效的UTF-8序列。

任何編碼都是如此。 在Shift-JIS中, 0x8080也是無效的字節序列,因此,如果您創建了存儲在sjis中的字符串列,則該值將失敗。 另一方面, latin1沒有無效的字節序列,因此所有字節都將在那里工作。

但是,如果您想存儲任意字節並且不關心字符和編碼,則應該使用二進制排序規則(例如VARBINARY列類型)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM