У меня есть следующий файл UTF-8, экспортированный из файла доступа Microsoft
http://www.yousendit.com/download/TTZtT214SU84Q1FLSkE9PQ
Я убедился, что моя база данных mysql имеет статус utf8; Команда для клиента и сервера. Я вставляю указанный выше файл в свою базу данных с помощью следующей команды:
LOAD DATA LOCAL INFILE 'tblAuction1.txt' INTO TABLE Auctions FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\';
Кажется, все идет нормально, символы юникода отображаются в HTML, как они должны быть, насколько я могу судить. Непосредственное содержание поля базы данных здесь:
http://www.nomorepasting.com/getpaste.php?pasteid=22622
Однако полученный HTML-код отображается:
http://www.nomorepasting.com/getpaste.php?pasteid=22617
Который отображается как
Листинг
1.00
<\/OBJECT>
');\n\t\t<\/SCRIPT>\n\t\t
в браузере
Код, который я использую, чтобы показать это:
http://www.nomorepasting.com/getpaste.php?pasteid=22618
который работал нормально, прежде чем я изменил кодировку.
В качестве побочного вопроса мне интересно, почему переход от разделителя табуляции к разделению точкой с запятой и вложение полей приведет к уменьшению размера экспортируемого файла вдвое. Символ табуляции - это один символ, такой же как; символ, а добавление кавычек должно заключаться в увеличении размера?
В зависимости от конфигурации веб-сервера вам может понадобиться явно указать кодировку «text / html; charset = UTF-8», используя header()
:
header('Content-Type: text/html; charset=UTF-8');
Этого должно быть достаточно для вашей конкретной проблемы, но - в случае, если вы также намереваетесь манипулировать строками - обратите внимание, что PHP содержит много функций, которые небезопасно использовать с многобайтовыми символами: вы должны по крайней мере правильно настроить расширение mbstring .
У меня также есть этот шпаргалка в моих закладках, я думаю, что это все еще актуально.