2016-09-25 139 views
0

我有更新我的msyql這句話有問題:在mysql®中保存特殊字符? PHP

davc® 50PCS 

當我運行MySQL工作臺波紋查詢它的工作原理:

UPDATE products 
SET 
    title = 'davc® 50PCS ' 
WHERE 
    product_id = '386' 

但是當我從同一個查詢我的服務器,它運行成功,但它刪除®後的每一件事。

我想我應該做一些編碼?我使用PHP和mysqli對象。

感謝

+0

你應該使用utf-8來註冊它吧 – MRustamzade

+0

@MehemmedRustemzade如何做到這一點?你能告訴我代碼示例 – david

+4

[UTF-8一路通過](http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –

回答

-1

像這樣的事情

$text = utf8_encode ("davc® 50PCS "); 

UPDATE products SET 
title = "{$text}" WHERE product_id = '386' 

重要提示:改變你的SQL從SQL注入固定。事情是這樣的:http://www.w3schools.com/php/php_mysql_prepared_statements.asp

+0

感謝您的回答,但是此打印â代替® – david

+1

請不要盲目推薦['utf8_encode()'](http://php.net/utf8_encode)。它只能從ISO-8859-1轉換爲UTF-8,並且你不知道源編碼是基於這個問題的。 –

0

https://stackoverflow.com/a/38363567/1766831討論,你遇到的兩個問題:

  • 「截斷」,這通常是由文本是latin1的,但試圖保存到UTF8(或utf8mb4)引起的。
  • 「Mojibake」(如â®),這又是由文本和列引起的不同意引起的。但它也涉及連接參數不符合客戶端中的編碼。