2012-02-17 44 views
0

下面的代碼包含一個JS函數,它接收參數String「€€」(歐元符號)。 我需要將這些字符中的每一個轉換爲它的ASCII擴展的整數(128與ISO-8859-1)。在Javascript中將字符轉換爲正確的ASCII擴展整數值

然而,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 
+0

€in ASCII?有這樣的野獸嗎? – bzlm 2012-02-17 08:24:27

+1

ISO-8859-1沒有''''。你的意思是windows-1252? – dan04 2012-02-17 16:05:17

+0

我已更新問題描述。我打算用ISO-8859-1創建文件,但上面的代碼可能是錯誤的。你能協助嗎?謝謝 – Arturo 2012-02-17 17:51:17

回答

1

你必須確保該文件實際上是保存爲ISO-8859-1,但實際上是不可能的因爲該字符集中沒有€字符。 「

」ISO/IEC 8859-1缺少歐元符號。「

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

正如你所得到的字符代碼8364,該文件是最有可能保存爲UTF-8,作爲字符代碼與unicode character €對應。

+0

感謝您的幫助。似乎是問題的根源。我已更新問題描述。我打算用ISO-8859-1創建文件,但上面的代碼可能是錯誤的。你能協助嗎?謝謝 – Arturo 2012-02-17 17:52:08

+1

@ user411103:您使用的是ISO-8859-1的一些非標準格式,因爲標準版本沒有代碼128到159的任何字符。無論如何,當您從文件複製文本時,它只是文本,它沒有任何編碼信息。當您粘貼文本並保存時,它將使用程序正在使用的任何編碼進行編碼。保存文件時應指定編碼(例如,使用另存爲...選項)。 – Guffa 2012-02-17 19:05:47

+0

我將需要在一個可打印的字符中寫入0到255之間的整數。你會推薦我什麼charset?謝謝 – Arturo 2012-02-17 19:18:21

相關問題