2016-09-25 5 views
0

я имею проблему с обновлением моего msyql с этим предложением:сохранить специальный символ в mysql ®? PHP

davc® 50PCS 

, когда я запустить сильфона запрос в MySQL Workbench он работает:

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» (например, â®), что опять-таки вызвано несогласием текста и столбца. Но это также связано с параметрами соединения, не согласующимися с кодировкой в ​​клиенте.