UTF-8 и ISO-8859-1: почему он работает большую часть времени, а иногда нет? - PullRequest
2 голосов
/ 23 ноября 2011

У меня есть osCommerce 2.2 MST, в котором есть некоторые пользовательские дополнения.Сам osCommerce находится в ISO-8859-1.У дополнения есть таблица в базе данных MySQL, которая теперь находится в utf8_general_ci (остальные находятся в latin1_swedish_ci).Php-файл, который я вызываю, выводит

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Как я уже упоминал ранее, данные из базы данных находятся в UTF-8.Но буквы типа ö, ä, ü отображаются правильно.Как это может быть?Там не должно быть utf8_decode.Но буква č отображается как ?.Я получаю это напрямую как массив результатов.Если я сделаю запрос с phpmyadmin, он будет отображаться правильно.

Мне удалось правильно отобразить все буквы (только в одном разделе скрипта).Это то, что я сделал

mysql_query("SET NAMES 'utf8'"); 

В php-скрипте я также добавил

header('content-type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

Но потом возникли другие проблемы.

Что я хочу знать, почему данныев UTF-8 «правильно» отображается, когда не должно быть.И как мне правильно отобразить букву č?

Система мне кажется довольно сложной.Где и как я могу посмотреть, что здесь не так?

1 Ответ

2 голосов
/ 23 ноября 2011

Я не знаю последовательности кодировок / декодировок, через которые проходят ваши данные, но причина, по которой буквы типа ö, ä и ü верны, а č нет, состоит в том, что ö, ä и ü закодировано в ISO-8859-1, но č не может. Вам нужно будет использовать UTF-8 вместо ISO-8859-1 в своем HTML, чтобы отобразить č.

...