2012-04-09 3 views
3

У меня есть HTML, который содержит файл Javascript. Этот скрипт содержит специальный символ, ASCII 152. Когда я пытаюсь отобразить charCodeAt, я получаю разные результаты, но никогда не правильный. Не могли бы вы посоветоваться? БлагодаряСимволы с ASCII> 128 некорректно читаются в Javascript

test.html

<script type="text/javascript" charset=SEE BELOW src="test.js"> 
</script> 

TEST.JS файл с ANSI кодировкой

function d(a) 
{ 
a=(a+"").split(""); 
alert(a[1].charCodeAt(0)); 
}; 
d("i˜g"); // Note that ˜ is 152 in ASCII 
  • test.html с й-определенным пользователем кодировким: предупреждение показывает 63384. С% 63232 работает, так как каждый char> 128 отображается как 63232 + char.
  • test.html с UTF-8 кодировок: предупреждение показывает 65533. Все символы> 128 отображаются как 65533.
  • test.html с Windows-1252 кодировок: предупреждение показывает 752. Я не могу найти связь между ASCII и что отображается.

TEST.JS файл с UTF-8 кодировкой

function d(a) 
{ 
a=(a+"").split(""); 
alert(a[1].charCodeAt(0)); 
}; 
d("i[x98]g"); // Note that x98 is 152 
  • test.html с й-определенным пользователем кодировким: предупреждение показывает 65533. Всех символов> 128 отображаются как 65533.
  • test.html с UTF-8 кодировкой: предупреждение показывает 65533. Все символы> 128 отображаются как 65533.
  • test.html с Windows-1252 кодировкой: предупреждение показывает 65533. Все символы> 128 отображаются как 65533.
+2

Там нет символов в диапазоне 127-255 для utf8 и ASCII заканчивается на 127 ... Также символ в позиции '1' в '' i [x98] g "' является '" ["' – Esailija

+0

"~" не находится в позиции 152 в любой кодировке, о которой я знаю. – deceze

+0

См. Www.ascii-code.com (ASCII extended) – Arturo

ответ

5

Там нет символов в диапазоне 128-255 для utf8 и ASCII полностью заканчивается на 127 ... Кроме того, символ в позиции 1 в "i[x98]g" является "[", то "[x98]" не имеет смысла.

Ваша функция может быть заменена на str.charCodeAt(1).

Характер ˜ является Unicode Character 'SMALL TILDE' (U+02DC и может быть записана в виде "\u02DC" или String.fromCharCode(732)

+1

Дополнительная информация: [charCodeAt()] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/ String/charCodeAt) работает с Unicode и не очень заботится о ASCII. –

+0

Извините, я имел в виду ASCII EXTENDED. Как показано ниже, 152 является «~» http://www.ascii-code.com/ [x98] - один символ. Это способ, которым Notepad ++ представляет это 152 char в UTF-8. 98 в шестнадцатеричном состоянии - 152. – Arturo

+0

Спасибо всем. Затем я перефразирую свой вопрос. Я хочу написать символ, представляющий целое число 152 в TEST.JS как параметр d(), так что, когда я запускаю эту функцию, отображается предупреждение 152. Я открыт для использования любой кодировки. – Arturo

0

ASCII имеет только 127 символов. символ 152 является несуществующей

+0

Извините, я имел в виду ASCII EXTENDED. В соответствии с ниже, 152 is '~' http://www.ascii-code.com/ – Arturo