Как правильно отобразить данные таблицы MySQL на другом языке в php - PullRequest
0 голосов
/ 11 июня 2010

У меня есть таблица MySQL, данные которой в одном из столбцов представлены на языке, отличном от английского (персидский). когда я ввожу данные в таблицу, они отображаются правильно, но когда я хочу показать данные в php-файле, они отображаются следующим образом: ???? хорошо, что я должен сделать, чтобы показать данные в их правильной форме?

Ответы [ 2 ]

2 голосов
/ 11 июня 2010

Поскольку я много работал с «неанглийскими» символами, для правильного отображения и хранения этих символов требуется несколько вещей.

Ни в каком конкретном порядке (поскольку я не знаю, какая кодировка лучше всего подходит для персидского языка, я буду использовать UTF-8, если он другой, просто используйте тот, который вам нужен):

Сообщите браузеру, какую кодировку вы используете, либо установив правильный заголовок из PHP header('Content-type: text/html; charset=utf-8');, либо установите метатег в вашем html следующим образом: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

В базе данных избегать смешивания разных параметров сортировки и кодировок в столбцах / таблицах. Я всегда устанавливаю базу данных, таблицы и столбцы в utf8_general_ci, которые для моих нужд работают постоянно (языки, такие как английский, немецкий, сербский, венгерский ...).

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

Все это должно обеспечить правильное отображение символов Юникода. Однако есть еще одна вещь, которая может переопределить все это - веб-сервер. Apache (не знаю о других серверах) имеет директиву AddDefaultCharset. На большинстве установок это оставлено как Выкл., Но я сталкивался с настройками, где для charset по умолчанию было установлено значение latin1, таким образом переопределяя все мои настройки charset. Если это установлено, это установлено в httpd.conf (или подобном файле конфигурации). Если у вас есть доступ к нему, я рекомендую отключить его. Если вы этого не сделаете, то вы можете переопределить глобальное значение с помощью .htaccess, размещенного в вашем корне, что-то вроде: AddDefaultCharset utf-8

1 голос
/ 11 июня 2010

Добавьте правильный заголовок типа контента:

header('Content-type: text/html; charset=utf-8');

или любую другую кодировку, которую вы используете вместо UTF-8

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