Китайские / японские символы в окне поиска и форме - PullRequest
0 голосов
/ 17 марта 2010

Почему, когда я использую Firefox для ввода: , GET преобразуется в:

q=%E6%BC%A2&start=0

Однако, когда я использую IE8 и набираю один и тот же китайский символ, GET будет:

q=?&start=0

Превращает его в знак вопроса.

Ответы [ 3 ]

5 голосов
/ 17 марта 2010

Пометьте кодировку страницы как UTF-8, и эта проблема исчезнет. Firefox не сможет автоматически определить вашу кодировку и без этой подсказки. И вы, возможно, вручную изменили кодировку в IE один раз, так что это станет новым значением по умолчанию для немаркированных страниц.

поместите это в ваш <HEAD>:

<META http-equiv="Content-Type" content="text/html; charset=utf-8">

Если ваш контент на самом деле не в UTF-8, вам нужно использовать альтернативный метод. В FORM есть атрибут html, который намекает IE на то, что вы хотите, чтобы символы кодовой страницы не-ANSI отправлялись как UTF-8, но гораздо лучше просто использовать правильный тип контента.

Кроме того, адресная строка может быть не лучшим местом для просмотра полученного текста, так как в прошлый раз, когда я проверял, она не работала надежно с не-ACP символами. Убедитесь, что вы просматриваете фактические данные запроса.

Если вы говорите о вводе текста в адресную строку или поле поиска в браузере, а не о конкретной веб-странице, я не воспроизводлю эту проблему на английском Windows 7. Возможно, вы используете очень старую версию Windows и ваша системная кодовая страница ANSI не содержит этот символ; Win95 / Win98 / WinME наверняка будут иметь эту проблему.

Отредактировано, чтобы добавить: В IE 8 ввод символа, указанного вами на странице, содержащей это содержимое, работает именно так, как и ожидалось. Я проверял это с Fiddler. Любая проблема, с которой вы столкнулись, вероятно, отличается от той, которую вы описали до сих пор.

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
</HEAD>
<BODY>
<form accept-charset="utf-8" method="get" action="http://www.example.com/something">
<input type="text" name="q">
<input type="submit">
</form>
</BODY>
</HTML>

На самом деле вам не нужен кодекс подтверждения, если вы не используете альтернативную кодировку для самой страницы. Но я оставлю это в иллюстративных целях. Чтобы это было действительно полезно, по крайней мере в более ранних версиях IE (все могло измениться; мой коллега задал поведение в IE5 или около того), вам нужно скрытое поле «_charset_» без значения, чтобы поощрять браузер, чтобы пометить, какой кодировку он на самом деле использовал, но это лишнее на странице utf-8).

0 голосов
/ 17 марта 2010

Начнем с того, что IE считает, что китайские иероглифы можно отправлять «как есть» в UTF-8, тогда как Firefox считает, что их необходимо кодировать в URL.

Вы смотрели запрос GET по проводам? Могу поспорить, что это действительно трехбайтовая последовательность и что инструмент, который вы используете для его отображения, уменьшает его до?.

0 голосов
/ 17 марта 2010

Это может быть проблема установки шрифта или кодировки URL

Одной из основных проблем, с которыми я столкнулся при работе с символами CJK, является установка шрифтов восточноазиатского языка, которые не выполняются по умолчанию при установке ОС. Эти символы правильно отображаются в MS Word даже без установки. Чтобы убедиться, что все приложения в ОС могут работать с CJK (китайский, японский и корейский языки), лучше выполнить приведенное ниже упражнение

  1. Перейти к панели управления
  2. Выбор региональных и языковых параметров
  3. Перейти на вкладку языка
  4. Установите флажок, чтобы установить шрифты для восточноазиатских языков

Надеюсь, у вас есть компакт-диск с Windows, чтобы продолжить.

После этого IE8, надеюсь, будет правильно отображать символы.

Также в случае, если вы делаете какую-либо кодировку URL, убедитесь, что вы всегда используете UTF-8 в качестве кодировки символов при работе с не ASCII-символами.

...