我无法执行此SQL脚本:
INSERT INTO `mabase`.`new_table` (`idnew_table`, `name`) VALUES ('2', '');
错误是:
错误1366:字符串值不正确:第1行第'name'列的'\ xF0 \ xA0 \ xBC \ xAD' SQL语句: INSERT INTO
mabase
。new_table
(idnew_table
,name
)VALUES('2','')
我的数据库和表格是在utf8字符集和utf8_general_ci排序规则中。 我也尝试过: utf8_unicode_ci, utf8mb4_general_ci, bg5_cinese_ci, gbk_cinese_ci。
我在MySql工作台中尝试了所有这些 在窗户上。
是四字节字符。我只和他们有问题。 请告诉我如何在mysql中保存四个字节的字符。
答案 0 :(得分:10)
您想要的角色U+20F2D,位于" CJK统一表意文字扩展B" Unicode"补充表意平面"因此在v5.5之前的任何MySQL Unicode字符集中都没有;自v5.5起,它在utf8mb4
,utf16
,utf16le
和utf32
字符集中可用。
在MySQL的big5
或gbk
个字符集中不可用。
utf8
编码不起作用正如Unicode Support所述:
Unicode支持的初始实现(在MySQL 4.1中)包括两个用于存储Unicode数据的字符集:
ucs2
,Unicode字符集的UCS-2编码,每个字符使用16位。
utf8
,Unicode字符集的UTF-8编码,每个字符使用一到三个字节。这两个字符集支持Unicode 3.0版的基本多语言平面(BMP)中的字符。 BMP字符具有以下特征:
他们的代码值介于0到65535之间(或
U+0000
..U+FFFF
)。它们可以使用固定的16位字进行编码,如
ucs2
中所述。它们可以使用8位,16位或24位进行编码,如
utf8
中所述。它们足以支持主要语言中的几乎所有字符。
上述字符集不支持的字符包括位于BMP之外的补充字符。 BMP之外的字符比较为REPLACEMENT CHARACTER,并在转换为Unicode字符集时转换为
'?'
。在MySQL 5.6中,Unicode支持包括补充字符,这需要具有更宽范围的新字符集,因此需要更多空间。下表显示了先前和当前Unicode支持的简要功能比较。
╔══════════════════════════════╦══════════════════════════════════════════════╗ ║ Before MySQL 5.5 ║ MySQL 5.5 and up ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ All Unicode 3.0 characters ║ All Unicode 5.0 and 6.0 characters ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ No supplementary characters ║ With supplementary characters ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ ucs2 character set, BMP only ║ No change ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ utf8 character set for up to ║ No change ║ ║ three bytes, BMP only ║ ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ ║ New utf8mb4 character set for up to four ║ ║ ║ bytes, BMP or supplemental ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ ║ New utf16 character set, BMP or supplemental ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ ║ New utf16le character set, BMP or ║ ║ ║ supplemental (5.6.1 and up) ║ ╠══════════════════════════════╬══════════════════════════════════════════════╣ ║ ║ New utf32 character set, BMP or supplemental ║ ╚══════════════════════════════╩══════════════════════════════════════════════╝这些更改是向上兼容的。如果要使用新的字符集,则应用程序可能存在不兼容问题;见Section 10.1.11, “Upgrading from Previous to Current Unicode Support”。该部分还描述了如何将表从
utf8
转换为(4字节)utf8mb4
字符集,以及可能适用的约束条件。
big5
编码不起作用正如What problems should I be aware of when working with the Big5 Chinese character set?所述:
MySQL支持Big5字符集,这在香港和台湾(中华民国)很常见。 MySQL
big5
实际上是Microsoft代码页950,与原始的big5
字符集非常相似。[ deletia ]已提交添加
HKSCS
扩展程序的功能请求。需要此扩展程序的用户可能会发现Bug#13577的建议修补程序很有用。
gbk
编码不起作用正如What CJK character sets are available in MySQL?所述:
在这里,我们尝试使用官方文档明确说明
gb2312
或gbk
中哪些字符合法。请在报告gb2312
或gbk
错误之前检查这些参考文献。
有关
gb2312
字符的完整列表,请根据gb2312_chinese_ci
归类排序:gb2312MySQL
< / LI>gbk
实际上是“Microsoft代码页936”。这与字段gbk
(中间点),A1A4
(短划线),A1AA
和A6E0-A6F5
的官方A8BB-A8C0
不同。有关
gbk
/ Unicode映射的列表,请参阅http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT。对于MySQL的
gbk
字符列表,请参阅gbk。
答案 1 :(得分:0)
ALTER DATABASE CHARACTER SET&#39; utf8&#39; COLLATE &#39; utf8_unicode_ci&#39;
ALTER TABLE转换为字符集DEFAULT COLLATE DEFAULT
简短而简单。
希望有所帮助