PHP Sax Parser и UTF-8 - PullRequest
       21

PHP Sax Parser и UTF-8

1 голос
/ 24 ноября 2011

К сожалению, у меня возникают некоторые проблемы с парсером php sax и кодировкой utf-8.

Корпус:

У меня есть xml-файл, который закодирован в utf-8. Файл анализируется с использованием стандартного синтаксического анализатора php. Данные хранятся в некоторых объектах-контейнерах и вставляются в базу данных mysql. К сожалению, некоторые символы выглядят странно в базе данных (в основном, немецкий умлаут). Например, Гюртель выглядит как Гертель.

Следующий фрагмент кода показывает, как создается экземпляр синтаксического анализатора:

$saxParser = xml_parser_create("UTF-8");

Достаточно ли этого для разбора файлов utf-8? Если да, то чего мне не хватает? Какие-то особые вещи базы данных при вставке?

Заранее спасибо.

1 Ответ

1 голос
/ 24 ноября 2011

Шаг за шагом проверяйте кодировку, чтобы найти неверный код:

  1. Напечатайте значение, которое вы извлекаете из XML
  2. Распечатайте построенный оператор SQL

При печати значений убедитесь, что ваш браузер считывает вывод с правильной кодировкой.

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

PHP скрипт

Сохраните ваш PHP с кодировкой UTF-8 без BOM, поскольку это может вызвать проблемы. Используйте только многобайтовые строковые функции при работе со строками UTF-8.

XML-файл

XML-файл начинается с <?xml version="1.0" encoding="UTF-8" ?> и файл правильно сохраняется с кодировкой UTF-8.

Столбец SQL (сопоставление)

VARCHAR(length) [CHARACTER SET charset_name] [COLLATE collation_name]

Связь между сервером MySQL и скриптом PHP

Запустите эту команду сразу после открытия соединения с сервером MySQL:

SET NAMES 'UTF8'

SET NAMES указывает, какой набор символов будет использовать клиент для отправки SQL выписки на сервер. http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

...