Немецкие умлауты в MYSQL INSERT - PullRequest
5 голосов
/ 13 мая 2011

У меня проблема с моим оператором вставки mysql.У меня есть форма, которая правильно передает символы utf-8 в файл вставки (я проверил POST-переменные).

Теперь, когда я смотрю после INSERT в моей БД, нет никаких умлаутов, но вопросотмечается.

Ошибка должна быть прямо перед оператором вставки.

Если я выводил (вводил вручную) содержимое из моей БД, умлауты отображаются правильно.

// echo $_POST["title"];
// outputs correctly with special chars: "Some german title with umlaute ä ö ü"

mysql_query("INSERT INTO videos (youtube_hash, title, description, category, created) VALUES ('".mysql_real_escape_string($_POST["hash"])."', '".mysql_real_escape_string($_POST["title"])."', '".mysql_real_escape_string($_POST["desc"])."', '".mysql_real_escape_string($_POST["cat"])."', '".time()."')") or die(mysql_error());

// database entry looks like this: "Some german title with umlaute ? ? ?"

Я надеюсь, что любой может помочь мне в этом:)

РЕДАКТИРОВАТЬ:

htmlentities () сделал работу!

Ответы [ 3 ]

4 голосов
/ 17 декабря 2013

Когда вы вставляете ваши данные из php в базу данных mysql, попробуйте обернуть ваши строковые данные с помощью utf8_decode ();

utf8_decode(string)

Как сказано в руководстве php, utf8 преобразуется в ISO-8859-1 (latin1);

Возможно, вы захотите поэкспериментировать с функцией iconv () . Это дает вам больший выбор входной кодировки и желаемой выходной кодировки

string iconv ( string $in_charset , string $out_charset , string $str )

Если это по-прежнему не помогает, попробуйте изменить столбец сортировки в столбце таблицы Mysql, в который вы вставляете, на latin1_swedish_ci.

1 голос
/ 13 мая 2011

Использование HTML-сущностей - не самое лучшее решение вашей проблемы. В идеале вы должны хранить данные в базе данных и использовать только htmlentities() для отображения. Что делать, если вы когда-нибудь хотели отобразить / экспортировать эти данные не так, как в HTML?

Я бы порекомендовал прочитать об обработке набора символов в PHP / MySQL. Вот статья, которую я недавно написал: Как избежать проблем с кодировкой символов в PHP

Опубликуйте снова, если у вас все еще есть проблемы.

0 голосов
/ 13 мая 2011

Попробуйте изменить набор символов БД MySQL с Latin1 на UNICODE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...