2012-02-17 28 views
0

以下のコードには、パラメータ文字列 "¥¥"(ユーロ記号)として受け取るJS関数が含まれています。 これらの文字のそれぞれをASCII相当の整数に変換する必要があります(ISO-8859-1では128)。文字をJavaScriptのASCII拡張整数値に変換する

しかし、t [0]とt [1]は "128"の代わりに "8364"という値をとります。私は間違って何をしていますか? ISO-8859-1の代わりにUTF-8を使用すると、値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> 

詳しい話は、私はこれらの2つのバイトは、整数[128128]を表す、以下のJavaコードで書かれたファイル「output.js」から、この「€€」を、貼り付けることです。私は[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 
+0

€?そんな獣はいますか? – bzlm

+1

ISO-8859-1には '€'はありません。窓1252を意味しましたか? – dan04

+0

私は問題の説明を更新しました。私はISO-8859-1でファイルを作成しようとしましたが、おそらく上記のコードはこの目的のために間違っています。助けてもらえますか?ありがとう – Arturo

答えて

1

を取得するために、あなたは、ファイルが実際にISO-8859-1として保存されていることを確認する必要があり、それは実際に可能ではありませんその文字セットに€文字がないためです。

"ISO/IEC 8859-1にはユーロ記号がありません。"

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

あなたは文字コード8364を取得しているように、その文字コードがunicode character €に対応するよう、ファイルが最も可能性が高い、UTF-8として保存されます。

+0

あなたの助けをありがとう。問題の起源と思われる問題の説明を更新しました。私はISO-8859-1でファイルを作成しようとしましたが、おそらく上記のコードはこの目的のために間違っています。助けてもらえますか?ありがとう – Arturo

+1

@ user411103:ISO-8859-1の非標準形式を使用しています。標準バージョンにはコード128〜159の文字がありません。とにかく、ファイルからテキストをコピーすると、エンコード情報はありません。テキストを貼り付けて保存すると、プログラムが使用しているエンコーディングでエンコードされます。ファイルを保存するときにエンコードを指定する必要があります([名前を付けて保存...]オプションを使用するなど)。 – Guffa

+0

印刷可能な1文字に0〜255の整数を書く必要があります。どのような文字セットを私にお勧めしますか?ありがとう – Arturo

関連する問題