mysql_real_escape_string и проблема с апострофом

поэтому я использовал mysql_real_escape_string для вставки данных в мою базу данных... но затем, когда я это делаю, он заменяет все апострофы символом ’

поэтому вместо того, чтобы отображать это, он отображает это .......

есть ли способ преобразовать эти символы в апострофы при чтении из базы данных?


person kamikaze_pilot    schedule 20.12.2010    source источник
comment
Какую кодировку символов вы используете для вывода? И ваш указал его правильно?   -  person Gumbo    schedule 20.12.2010


Ответы (3)


Это какая-то проблема с кодировкой символов.

Потому что в UTF-8 (U+2019) кодируется с помощью 0xE28099. И это представляет символы â (0xE2), (0x80) и (0x99) в Windows- 1252.

Похоже, вы просто забыли правильно указать кодировку выходных символов, чтобы браузер вместо этого использовал кодировку символов Windows-1252 по умолчанию.

person Gumbo    schedule 20.12.2010

Примените mysql_set_charset к UTF-8 в вашем PHP.

person ajreal    schedule 20.12.2010

Убедитесь, что ваша база данных и приложение используют одну и ту же кодировку символов.

В двоичном формате ' идентично по значению ’, поэтому вам необходимо убедиться, что кодировка установлена ​​одинаково.

В вашем PHP-приложении вы можете указать это в следующих двух строках.

define(‘DB_CHARSET’, ‘utf8′);
define(‘DB_COLLATE’, ”);

Это настраивает ваше приложение на использование набора символов UTF-8, который вы должны убедиться, что он соответствует параметрам сортировки вашей базы данных, тогда ваша проблема исчезнет.

Вы можете программно изменить набор символов базы данных с помощью функции mysql_set_charset.

person Greg    schedule 20.12.2010
comment
Я считаю, что эти константы специфичны для WordPress, а не для общего PHP. - person fire; 20.12.2010
comment
Нет, ' (U+0027) — это 0x27 в UTF-8. Но (U+2019) равно 0xE28099 в UTF-8 и представляет символы â, и в Windows-1252. - person Gumbo; 20.12.2010