2016-02-28 104 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

我認爲你是對的。 –

相關問題