У меня есть таблица mySQL, данные которой находятся в одном из своих столбцов на языке, отличном от английского. (Персидский) когда я ввожу данные в таблицу, он отображается правильно, но когда я хочу показать данные в php файле, он выглядит следующим образом:???? ну, что я должен делать, чтобы показать данные в правильной форме?
Поскольку я много работал с "неанглийскими" персонажами, для правильного отображения и хранения этих символов требуется несколько вещей.
В каком-то конкретном порядке (поскольку я не знаю, какая кодировка лучше всего подходит для персидского языка, я буду использовать 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
Добавьте правильный заголовок содержимого:
header('Content-type: text/html; charset=utf-8');
или любую кодировку, которую вы используете вместо UTF-8