Проблема кодировки MySQL с турецкими символами - PullRequest
0 голосов
/ 21 ноября 2011

Я использую WAMP-сервер. У меня есть php.ini для UTF-8, а также у меня есть header('Content-Type: text/xml; charset=utf-8'); в моем php и @mysql_query("SET NAMES utf8"); в моем файле подключения.

Для сортировки MySQL установлено значение utf8_turkish_ci, и когда я пишу свои запросы непосредственно из phpMyAdmin, турецкие символы ç, ş, ö, ğ и т. Д. Отображаются правильно. Но когда я пытаюсь отправить их из формы php, они превращаются в странные символы в базе данных, однако, когда я пишу их снова с php, они отображаются правильно.

Моя проблема в том, что, когда я ввожу запросы непосредственно из phpMyAdmin, они не отображаются должным образом в PHP, и наоборот, когда я вводю их из PHP, они не отображаются должным образом в базе данных. Как я могу это исправить?

1 Ответ

0 голосов
/ 21 ноября 2011

Ваши данные правильно хранятся в базе данных, когда вы пишете файлы, используя ваш скрипт. Доказательством этого является то, что они отображаются правильно, когда вы выводите данные обратно. Если вы не видите данные, правильно отформатированные в вашем phpmyadmin, это означает, что страница неправильно настроена для отображения utf-8.

Самый простой способ проверить это - Ctrl + U, чтобы просмотреть исходный код вашего phpmyadmin и найти:

  < meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Также должно отображаться:

MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation:    utf8_unicode_ci

На самой первой странице при открытии phpMyAdmin. Если вы не видите их обоих, выполните следующие действия, чтобы исправить это:

A) Непосредственное решение, о котором я мог подумать, - это изменить или принудительно преобразовать кодировку символов браузера в utf-8. В Mozilla Firefox его можно настроить через «Вид» -> «Кодировка символов» -> «Юникод» (UTF-8)

.

или B) Другим элегантным решением может быть изменение конфигураций phpMyAdmin, чтобы он отправлял и устанавливал правильную кодировку в заголовке Content-Type как Content-Type: text / html; charset = utf-8. Для этого нам нужно отредактировать файл config.inc.php, находящийся в корневом каталоге phpMyAdmin:

$cfg['DefaultCharset'] = 'utf-8'; and 
$cfg['AllowAnywhereRecoding'] = true; 

Эти изменения конфигурации должны отправлять правильные заголовки. В любом случае, если для lang cookie уже задана какая-либо другая кодировка, изменения не будут отражены. Поэтому, чтобы увидеть изменения, может потребоваться очистить куки.

Кредит на вышеуказанные решения: http://rajeshanbiah.blogspot.com/2004/12/storing-unicode-texts-in-mysql-with.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...