проблема диакритики в проекте, выполненном с Zend Framework - PullRequest
0 голосов
/ 31 мая 2009

обнаружил интересную проблему во время тестирования нашего веб-приложения.

У меня есть приложение на локальном хосте (Windows) и сервере онлайн-тестирования (Linux). Оба подключены к одной БД (на сервере Linux). Когда я пытался редактировать одно текстовое поле через форму в приложении, расположенном на сервере Linux, он обрезал диакритические знаки из результата и сохранял их в БД без него. Но когда я попытался выполнить то же действие с тем же кодом на locahost (Windows), он сохранил весь текст с диакритическими знаками, как я его написал.

Я пытался проверить конфигурацию PHP, но у меня точно такая же конфигурация на обеих машинах.

У кого-нибудь есть идея, где мне искать, чтобы найти, какая проблема должна вызывать это?

Ответы [ 3 ]

1 голос
/ 31 мая 2009

Похоже, что одна или несколько настроек символов в экземпляре MySql на вашем компьютере с Windows не установлены в UTF8, попробуйте выполнить этот запрос:

show variables like '%character%'

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

character_set_client        utf8
character_set_connection    utf8
character_set_database    utf8
character_set_filesystem    binary
character_set_results      utf8
character_set_server        utf8
character_set_system        utf8
character_sets_dir        /usr/share/mysql/charsets/

Мое лучшее предположение заключается в том, что для одного или нескольких из них установлено значение latin1

Кроме того, вы можете проверить параметры сортировки, т. Е. Выполнить это

show variables like '%collation%'

И вы получите что-то вроде:

collation_connection    utf8_general_ci
collation_database    utf8_general_ci
collation_server        utf8_general_ci
0 голосов
/ 24 июля 2009

Обнаружена проблема использования одного фильтра в этом поле, которое по-разному действует в разных системах.

0 голосов
/ 31 мая 2009

Оба сервера обслуживают страницу в одной и той же кодировке?

В Firefox перейдите на страницу, щелкните правой кнопкой мыши и «Просмотр информации о странице». Там будет запись для кодирования. Для правильной передачи вам потребуется кодировка UTF-8 или аналогичная.

После этого проверьте настройки базы данных. Вам необходимо настроить соединение MySQL на использование UTF8, а для ваших таблиц и столбцов также должно быть установлено значение utf8.

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

SET NAMES 'utf8'
...