UTF8 и японские символы - PullRequest
3 голосов
/ 15 мая 2011

Проблема: посторонние символы не отображаются должным образом. Это включает в себя немецкий, японский, русский и все остальные, кроме английского (работает отлично). Так как PHP выполняет вызов MySQL с помощью вызова jQuery AJAX, он должен вернуть информацию и отобразить ее на странице. Данные вызываются и отображаются. Однако для неанглийских символов результаты отображаются в виде «?».

В phpMyAdmin данные отображаются в том виде, в каком они должны были быть на японском и немецком языках. Но те, которые получены из MySQL, не возвращаются как таковые.

Проблема не связана с браузером, так как мой браузер поддерживает все кодировки языков.

Кодировка MySQL: UTF8_GENERAL_CI

Кодировка страницы: UTF-8

<meta charset="utf-8" />

Проблема может заключаться в получении данных PHP из MySQL, поскольку в MySQL все выглядит нормально, если смотреть через phpMyAdmin. Итак, вот код, используемый для получения этих данных из MySQL. Если кодировка не должна быть включена в этот файл.

view.php (выборка необходимых данных из MySQL может быть причиной возврата проблемы кодирования ???)

$q = mysql_query("SELECT * FROM `notice` WHERE nid = '".$nid."'");
         $a = mysql_fetch_array($q);

             $nid = stripslashes($a['nid']);
             $note = stripslashes($a['note']);
             $type = stripslashes($a['type']);
             $private = stripslashes($a['private']);
             $date = stripslashes($a['date']);
             $author = stripslashes($a['author'])

;

PS. Отредактировано, чтобы быть более ясным.

Ответы [ 3 ]

5 голосов
/ 15 мая 2011

Скорее всего, вам нужно установить кодировку вашей базы данных соединение в UTF-8.

Как это сделать, зависит от используемой вами библиотеки базы данных.

В старой библиотеке mySQL это будет

mysql_query("SET NAMES utf8");

(до MySQL 5.0.7) и

mysql_set_charset("utf8");

для mySQL 5.0.7 и новее.

0 голосов
/ 15 мая 2011

См .: http://www.w3.org/TR/html4/charset.html#h-5.2.2

Поэтому вы должны использовать: <META http-equiv="Content-Type" content="text/html; charset=UTF-8">

В идеале эта информация должна указываться в заголовках ответа HTTP.

0 голосов
/ 15 мая 2011

попробуйте позвонить

mysql_query("SET NAMES utf8");

где-то перед вашим запросом. конечно если вы на PHP.

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