Преобразование символа для исправления расширенного ASCII-значения в Javascript - PullRequest
0 голосов
/ 17 февраля 2012

Код, приведенный ниже, содержит функцию JS, которая получает в качестве параметра строку «€ €» (знак евро). Мне нужно преобразовать каждый из этих символов в его расширенный целочисленный эквивалент в ASCII (128 с ISO-8859-1).

Однако t [0] и t [1] принимают значение «8364» вместо «128». Что я делаю неправильно? Обратите внимание: если я использую UTF-8 вместо ISO-8859-1, они принимают значение 65533, а в отладчике JS (инструменты разработчика Chrome и IE) вместо символа € отображается знак вопроса.

Спасибо, мил

<html>
<head>
<meta http-equiv="Content-Type" content="text/javascript; charset=ISO-8859-1">
<title>JavaScript Scripting</title>
</head>
<body>
<script type="text/javascript" charset="ISO-8859-1">
function d(s) 
{
    var data = (s + "").split("");
    var dataLength = data.length;
    var t = [dataLength],n;

    for(n=0;n<dataLength;n++)
    t[n]=data[n].charCodeAt(0);
}
d("€€");
</script>
</body>
</html>

Полная история в том, что я вставил этот "€елье" из файла "output.js", где эти два байта были записаны с помощью кода Java ниже, представляющего целые числа [128,128]. Вот почему мне нужно t [0] и t [1], чтобы получить значение 128.

res.setContentType("application/octet-stream"); 
res.setHeader("Content-Disposition","attachment;filename=output.js;charset=ISO-8859-1");
ServletOutputStream os = res.getOutputStream();
char result[]=encode(req.getParameter("originalScript"));
// result[0] and result[1] have here integer value 128
String result2=new String(result);
// result2 is displayed here as non printable characters (blank)
os.print(result2);
// On output.js "€€" is displayed

1 Ответ

1 голос
/ 17 февраля 2012

Вы должны убедиться, что файл фактически сохранен как ISO-8859-1, но это на самом деле невозможно, поскольку в этом наборе символов нет символов €.

"ISO /В МЭК 8859-1 отсутствует [...] знак евро. "

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

Когда вы получаете код символа 8364, файл, скорее всего, сохраняется какUTF-8, так как этот код символа соответствует символу Unicode .

...