Как я могу решить мою кодировку языка файла веб-страницы PHP? - PullRequest
4 голосов
/ 29 июня 2011

У меня проблема с кодировкой языка в PHP, так как в моем php-файле должны отображаться английские и арабские символы.

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

На моей веб-странице есть несколько раскрывающихся списков, которые являются динамическими, но они отображают данные в странном формате, который не является английским или арабским, как квадраты и неизвестные символы.

Я проверил возможные причины и сделал много решений, таких как: -

  • Изменение кодировки PHP-скрипта:

    Сохранение файла с именем: WebPage1 типа: PHP и кодировка: ANSI или UTF-8 или Unicode.

  • Изменение объявления кодировки HTML:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
    
  • Изменение объявления кодировки PHP:

    header('Content-Type: text/html; charset=UTF-8);
    header('Content-Type: text/html; charset=windows-1256');
    
  • Изменение шрифта и языка таблиц базы данных:

    Arial(Arabic).
    

Проблема все еще существует, и я не знаю, что я могу сделать, чтобы решить эту проблему.

Можете ли вы предложить какое-либо решение?

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Всегда используйте UTF-8.

Ваш первый заголовок правильный.Ваш первый заголовок правильный, за исключением того, что вы должны использовать один = вместо ==.Убедитесь, что вы использовали функцию header() перед отправкой любого вывода в браузер.

Откройте ваши файлы в редакторе, поддерживающем Unicode, например, Editplus, notepad ++, и при сохранении каждого исходного кода или файла HTML используйте Сохранить как и выберите UTF-8 на экране сохранения.Если вы используете eclipse, импортируйте свой проект в eclipse, щелкните его правой кнопкой мыши и перейдите к настройкам проекта, примените настройку charset как utf-8 ко всему исходному коду.

Если что-то не так с данными, поступающими из базы данных MySQL,используйте соответствующие параметры сортировки для любого столбца хранения текста (varchar, blob и т. д.).Это обычные предложения для этого.Если вы используете Sybase, используйте Google для настройки параметров сортировки.

И не меняйте свой шрифт на арабский;Arial уже поддерживает это.

1 голос
/ 29 июня 2011

Проверьте соединение с базой данных, убедитесь, что sybase_connect соединяется с UTF-8 в качестве кодировки. Смотри http://php.net/manual/en/function.sybase-connect.php

Из комментария, что вы используете ODBC для подключения: Кажется, есть проблема с PHP / ODBC и UTF8. В этой теме упоминаются некоторые предложения: Проблема кодирования Php / ODBC

0 голосов
/ 29 июня 2011

Вы, кажется, что-то путаете.Ни UTF-8, ни windows-1256 не описывают языки, они обозначают наборы символов / кодировки.Хотя наборы символов могут содержать символы, которые обычно используются в определенных языках, их использование ничего не говорит о языке.

Теперь, поскольку символы Windows-1256 содержатся в Набор символов Unicode и, следовательно, может быть закодирован с помощью UTF-8, вы должны выбрать UTF-8 для обоих языков.

И если вы хотите объявить язык для своего содержимого, прочитайте учебник W3C на Объявление языка в XHTML и HTML .

В вашем случае вы можете объявить основной язык документа как en (английский), а части документа - ar (арабский):

header('Content-Language: en');
header('Content-Type: text/html;charset=UTF-8');

echo '<p>The following is in Arabic: <span lang="ar">العربية</span></p>';

Обязательно используйте UTF-8 для обоих.

...