У меня проблемы с кодировкой китайского языка на сайте ASP. Форматы файлов:
- translations.txt - UTF-8 (для хранения моих переводов)
- test.asp — UTF-8 — (для отображения страницы)
test.asp читает файл translations.txt, содержащий следующие данные:
Help|ZH|帮助
Home|ZH|首页
test.asp разбивается на разделитель канала, и если пользователь содержит файл cookie с ZH, он отобразит этот перевод, иначе он просто вернется к значению ключа.
Теперь я пробовал следующие вещи, которые не сработали:
Добавить метатег
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
Установите
Response.CharSet = "UTF-8"
- Установите
Response.ContentType = "text/html"
- Установите для Session.CodePage (и Response) значение 65001 (UTF-8)
- Я подтвердил, что текст в
translations.txt
определенно имеет кодировку UTF-8 и не имеет метки порядка следования байтов. - Браузер понимает, что страница имеет кодировку Unicode UTF-8, но на странице отображается абракадабра.
- Метод
Scripting.OpenTextFile(<file>,<create>,<iomode>,<encoding>)
возвращает один и тот же неверный текст независимо от параметра Encoding.
Вот пример того, что я хочу отображать в Китае (ZH):
- 首页
- 帮助
Но отображается следующее:
- 首页
- 帮助
Это наблюдается во всех протестированных браузерах — Google Chrome, IE 7/8 и Firefox 4. Шрифт определенно имеет китайскую ветвь глифов. Кроме того, у меня установлены восточные языки.
--
Я попытался вставить исходное значение в HTML, и это сработало (но обратите внимание, что это жестко закодированное значение).
- 首页
- 首页
Однако это странно.
首页 --(в шестнадцатеричном формате) --> E9 A6 96 E9 A1 --(как символы) --> 首页
Есть идеи, что мне не хватает?