UTF8 -> Latin1 Трудность, PHP - PullRequest
       36

UTF8 -> Latin1 Трудность, PHP

0 голосов
/ 19 марта 2012

Я теряю акцентированные символы.

Из PHP я загружаю XML-файл, который использует UTF8, в то время как мой PHP-скрипт использует Latin1.Мне не удается преобразовать UTF8 в латиницу 1.

Я пробовал это:

$meta=mb_convert_encoding($meta,'CP1252','UTF-8');

и

$meta=mb_convert_encoding($meta,'UTF-8');
$meta=mb_convert_encoding($meta,'CP1252','UTF-8');

Но в любом случае акцентированные символысломан и превращен в 2 символа.

Входные данные:

<title>First book of zoölogy</title>

Выходные данные:

<title>First book of zoo?logy</title>

Я сам разобрался, см. мой ответ ниже.Спасибо всем за помощь!

Ответы [ 3 ]

1 голос
/ 19 марта 2012

Это исправлено:

$meta=iconv('UTF-8','CP1252//TRANSLIT',$meta);

Раньше я не знал о iconv, я думал, что есть только mb_strings для работы, но iconv работает очень хорошо.

1 голос
/ 19 марта 2012

Измените параметры сортировки таблиц на Utf8_general_ci и перед подключением к базе данных:

mysql_set_charset("utf8");

Я думаю, что это может решить вашу проблему.

0 голосов
/ 19 марта 2012

Возможно, кодировка вашего сервера MySQL по умолчанию - UTF-8. Попробуйте это:
Вставьте следующий запрос после вашего подключения MySQL:

mysql_query("SET NAMES latin1");
...