2013-06-13 2 views
0

Сценарий: html-документ, который используется для редактирования сведений о продукте, кодируется как ISO-8859-1 и отправляет данные POST в PHP-файл (также кодированный ISO-8859-1). Этот PHP-файл, в свою очередь, имеет mysql_real_escape_string -функции, очищающие входы. Шифр сервера базы данных/mysql - UTF-8. Проблема в том, что когда в строке POST есть скандинавские буквы (ä, ö, å), mysql_real_escape_string возвращает пустую строку.Ошибка кодирования с помощью mysql_real_escape_string, возвращает пустую строку

Я попытался переопределить его с помощью utf8_encode/decode, но это не сработает.

Теперь, если я использую php-файлы html & для использования UTF-8, сохранение работает нормально (как и ожидалось), но все ранее сохраненные данные продукта выглядят коррумпированными, и есть тысячи строк продукта.

Что было бы самым простым решением для его устранения? Измените кодировку db? Запустить функцию кодирования для преобразования записей в db?

+0

«кодируется как ISO-8859-1» - Почему? Это не 90-е годы. – Quentin

+0

Обратите внимание: функции 'mysql_xxx()' устарели. Я рекомендую переключить свой код на использование более новых библиотек PDO или mysqli. – Spudley

+0

Кодовая база на самом деле с 90-х годов. Люблю это. – Apeli

ответ

1

mysql_real_escape_string считает актуальным набор символов соединения. Ваши скрипты ISO-8859-1 должны работать, если вы явно укажете свое соединение на UTF-8 перед вызовом mysql_real_escape_string (запрос «SET NAMES 'utf8» перед использованием mysql_real_escape_string)

Но наверняка я всегда рекомендую использовать unicode (и только unicode), где это возможно;)

Смежные вопросы