2016-09-25 108 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”(如â®),这又是由文本和列引起的不同意引起的。但它也涉及连接参数不符合客户端中的编码。