Как справиться с иностранными языками? - PullRequest
3 голосов
/ 09 ноября 2010

Я разрабатываю бразильский веб-сайт, который должен поддерживать иностранные символы, такие как á, à, ó, í ú, ê, etc.Он также использует AJAX, поэтому я подумал, что лучше использовать charset UTF-8, потому что я всегда получаю символ and и не знаю, как это исправить.

Мое навигационное меню отображается правильно при использовании UTF-8 (так как он запрашивает базу данных для отображения всего меню), но я не знаю, как это происходит.Вот несколько скриншотов базы данных и ее рендеринга: The databasealt text

Пока все хорошо.Проблема в том, что я начал использовать Zend_Navigation для рендеринга хлебных крошек, и я не знаю, что делать, чтобы покончить с символом �, который я получаю: the breadcrumbalt text

Что мне делать?Поменять кодировку на ISO-8858-1?Я уже сделал это, но кажется, что все неправильно, как это:

alt text

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

Кроме того, когда я изменяю его на missão, например, он отображаетmissão вместо missão.Кроме того, я не могу изменить его вручную, потому что он находится в базе данных, мне нужна какая-то функция, которая будет обрабатывать это

EDIT 2

Я изменил специальный символ в моей базе данных, какçã до çã, и теперь HTML отлично рендерится.Хотя я использую Zend_Navigation для хлебных крошек, и он рендерит missão вместо missão просто так:

alt text

Я также написал XML-файл, используя Zend_Config_Writer_Xml, и яувидеть его напечатанным <label>Informa&#xE7;&#xF5;es</label> вместо <label>Informações</label>.На всякий случай это поможет

Как мне поступить?

Ответы [ 3 ]

6 голосов
/ 09 ноября 2010

Вот действительно хорошая статья, которая помогла мне, когда я начал веб-разработку. Я работаю в многоязычной среде, поэтому постоянно сталкиваюсь с этим (просто чтобы добавить, насколько замечательной была статья:)

Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборах символов (без оправданий!)

Я всегда проверяю, что мои файлы сохраняются в кодировке строки UTF8, что мои заголовочные файлы php объявляют кодировку как utf8, что моя база данных использует utf8_general_ci для сопоставления, и что мой тег html head содержит метатег, объявляющий содержимое как utf8. Я думаю, что это покрывает.

HTH:)

edit: просто добавить (чтобы быть более нацеленным на вашу конкретную проблему) проверку, чтобы увидеть, обрабатывает ли ваш PHP-код ваши результаты как utf8. Данные могут правильно храниться в БД, но могут быть преобразованы при обработке.

0 голосов
/ 09 ноября 2010

Попробуйте изменить кодировку .php файла - откройте файл .php и сохраните его (или перезапишите) как файл utf8. Надеюсь, это поможет.

0 голосов
/ 09 ноября 2010

Убедитесь, что ваша база данных использует кодировку UTF-8 И ваше соединение с базой данных (кодировка, в которой символы передаются между MySQL и вашим PHP-кодом) - UTF-8 (см. этот пост для справки).

Также обратите внимание, что некоторые строковые операции в PHP разбивают строки, закодированные в UTF8, потому что они работают в предположении "1 char = byte", что неверно в UTF 8. htmlspecialchars не будет работать со строками в кодировке UTF-8.

...