无法在mysql中插入unicode字形

时间:2011-03-09 14:07:25

标签: mysql unicode collation

使用此查询:

UPDATE  `arg`.`arg_currency` SET  `symbol` =  '' WHERE  `arg_currency`.`id` =2 LIMIT 1 ;

我收到此错误:

  

警告:#1366字符串值不正确:   列'符号''\ xF0 \ x90 \ x80 \ xA4'   在第1行

symbolCHAR(1) utf8_roman_ci,但我都试图将整理更改为_general和_unicode,将字符更改为4,但我仍然得到了同样的错误。

我做错了什么?

(我都尝试通过自定义php代码和phpmyadmin插入它)

2 个答案:

答案 0 :(得分:6)

正如@CarpeNoctumDC指出的那样,这个问题解释了这个问题:

MySQL don't want to store unicode character

  

MySQL仅支持基本多语言平面(0x0000 - 0xFFFF)中的字符。

     

如果这架飞机你的角色出局了。

在你的情况下,我会通过将角色存储为数字实体来解决它。具有指定的UTF-8编码的 htmlentities()应该能够实现它,例如。不,它没有。

PHP手册的

This function in the User Contributed Notes适合我:它将角色转换为数字实体。

echo utf8tohtml("", true); // echoes 𐀤

答案 1 :(得分:-1)

这个''的编码是什么?首先尝试使用iconv() http://php.net/manual/en/function.iconv.php

将您的编码转换为php中的mysql表编码

更新:

看起来''被动态编码为字符串\xF0\x90\x80\xA4, 如果你的字段是CHAR(1)它不适合并返回错误 - 需要找到它被编码的原因。