2016-02-28 38 views
1

我已经搜索了解决方案的最后3小时,但它不起作用。如何在mysql中保存符号?

MySQL不支持utf8mb4(这是我无法测试的一种解决方案)。

谢谢!

+0

“MYSQL不支持utf8mb4” - 但它[版本5.5.3](https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html) 。 – VolkerK

+0

可能重复的[MySQL utf8mb4,保存表情符号时出错](http://stackoverflow.com/questions/35125933/mysql-utf8mb4-errors-when-saving-emojis) – Anthony

回答

2

下面是一个使用PHP和MySQL 5.5.3为例DB连接:

public function_construct($host, $db, $user, $pass){ 
    try { 
     $this->conn = new PDO("mysql:host = {$host}; 
          dbname = {$db}; 
          charset = utf8mb4", 
          $user, 
          $pass); 
    } else { exit(); } 
} 

从版本5.5.3 utf8mb4是完全UTF8向后兼容。如果您正在使用现有数据库查找MySQL配置文件并相应地将“utf8”的实例更改为“utf8mb4”。

+2

请记住[5.5.3/5.5.4于2010年第二季度发布](https://dev.mysql.com/doc/relnotes/mysql/5.5/en/);即将近6年前。这可能是继续运行旧版本的原因,甚至可能是一个好的版本,但除非另有说明,“我们”没有理由认为是这样。即如果使用utf8mb4不是一个选项,你(Martin Rauhut)应该明确地说出来(也许还解释了为什么,以避免对它进行不必要的讨论)。 – VolkerK

0

使用Mysql blob字段,直接在那里保存图像,尽管我个人不喜欢在数据库中保存图像,而是保存指向文件的链接。

$img = mysql_escape_string(file_get_contents('imagefile.gif')); 

然后,您会将此$ img插入到db中。

+0

我不认为这是关于图像。例如是一个“字符”,它是[代码点U + 1F385](http://unicode-table.com/en/1F385/)。它的utf-8(十六进制)表示是'F0 9F 8E 85',即一个4字节的序列。但是,MySQL的utf8字符集限制在最大3个字节的序列,而utf8mb4 _can_编码/处理这些序列。 – VolkerK

+0

我认为你是对的。 –

相关问题