Как правильно отобразить данные таблицы MySQL на другом языке в php

0

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

Теги:

2 ответа

2
Лучший ответ

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

В каком-то конкретном порядке (поскольку я не знаю, какая кодировка лучше всего подходит для персидского языка, я буду использовать 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 сразу после подключения к базы данных.

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

1

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню