Где добавить расширение UTF-8 на HTML-странице? - PullRequest
3 голосов
/ 22 ноября 2010

Мне нужно добавить charset = "utf-8" в конце тегов скрипта, чтобы выполнить перевод на другой язык.

Я не знаю, где все, что я должен добавить теги. Любые правила соблюдаются. Пожалуйста, дайте мне знать, где добавить кодировку. Нужно ли добавлять в конце «ApplicationLoader.js» или только после плагинов jquery. Любое предложение, пожалуйста.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My Web App</title>   

<link href="css/jquery/jquery.ui.all.css" rel="stylesheet" type="text/css" />   

<script type="text/javascript" src="js/jquery-1.4.2.min.js" charset="utf-8"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.custom.min.js" charset="utf-8"></script>
<script type="text/javascript" src="js/jquery.depends.js" charset="utf-8"></script>             
<script type="text/javascript" src="myemployeelist.js" ></script>

Обновление:

Я сделаю так, чтобы вам было легче понять мою ситуацию в деталях, и я больше не хулиган, а начинающий на тренировке. Насколько я понял, я объясню вам свои проблемы.

  1. Я создал проект веб-приложения в Eclipse, в котором я создал класс для соединения JDBC с MySQL.
  2. У меня есть класс на стороне сервера, который получает значение профиля пользователя из моего веб-приложения. текстовое поле и сохраняет в БД.
  3. Я использую плагин jQuery для перевода с английского на арабский.
  4. У меня есть HTML-страница, на которой, как указано в приведенной выше части вопроса, у меня есть теги, в которые я добавил charset = "utf-8" для указания юникода.
  5. Я использую dwr, чтобы получить значения в js и отправить их на сервер.
  6. Я изменил язык ввода на моем компьютере на арабский, а мой язык Mozilla Firefox на Арабский.

Я могу ввести английские значения в MySQL, и я могу получить его, но когда я введите арабское значение, оно не будет сохранено. Ошибка JDBC

java.sql.SQLException: Incorrect string value: '\xD8\xB3\xD9\x84\xD8\xA8...'

Я не знаю, как настроить для моего сервера Jetty 6 LANG переменную utf-8. Любое предложение, пожалуйста. Спасибо.

Ответы [ 3 ]

10 голосов
/ 22 ноября 2010

Если заголовок Content-Type присутствует в заголовках ответа HTTP, то он переопределит мета-заголовки. Очень часто этот заголовок уже по умолчанию предоставляется веб-сервером, и чаще всего кодировка отсутствует (что предполагает использование кодировки клиента по умолчанию, которая часто является ISO-8859-1). Другими словами, мета-заголовки обычно интерпретируются только тогда, когда ресурсы открыты локально (не по HTTP). Весьма вероятно, что по этой причине ваши мета-заголовки, по-видимому, не работали при обслуживании по HTTP.

Вы можете использовать Firebug или Fiddler2 для определения заголовков ответа HTTP. Ниже экран Firebug:

alt text

Вы можете настроить общий параметр для заголовков ответов HTTP на уровне веб-сервера. Вы также можете настроить его по запросу на уровне языка программирования. Поскольку неясно, какой веб-сервер / язык программирования вы используете, я не могу подробно рассказать о том, как настроить его соответствующим образом.


Обновление : в соответствии с признаками проблемы, что является следующим типичным исключением MySQL:

java.sql.SQLException: Incorrect string value: '\xD8\xB3\xD9\x84\xD8\xA8...'

Последовательность байтов D8 B3 D9 84 D8 A8 является действительной последовательностью UTF-8, которая представляет эти символы سلب ( U + 0633 , U + 0644 и U + 0628 ). Так что часть HTTP в порядке. Вы упомянули, что использовали Jetty 6 в качестве сервлет-контейнера. Более поздние сборки Jetty 6 уже поддерживают UTF-8 из коробки.

Однако проблема в части БД. Это исключение указывает на то, что кодировка БД / таблицы, которую было указано использовать, не поддерживает эту последовательность байтов. Это может произойти, когда БД / таблица не проинструктированы использовать UTF-8.

Чтобы исправить часть БД, введите команды MySQL:

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

А для будущих БД / таблиц используйте также CHARACTER SET utf8 COLLATE utf8_general_ci в CREATE.

3 голосов
/ 22 ноября 2010

Обычно достаточно объявить кодировку основного документа один раз, либо через заголовок content-type (подробное объяснение см. В ответе @ BalusC), либо, если он недоступен, метатег.

Если вы используете метатег, убедитесь, что он находится в первой строке раздела head.

Нет необходимости явно указывать набор символов для файлов сценариев.

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

2 голосов
/ 22 ноября 2010

Таким образом:

<script type="text/javascript" src="[path]/myscript.js" charset="utf-8"></script> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...