[英]Java writing a file as pure “windows-1252”
我有以下十進制ASCII值數組
int[] istr={146,192,128,224,185,152,240,192,6,26,66,72,186,184,88,128,182,40,104,96,36,236,152,128,212,200,64,64,101,252,174,0,96,192,112,24,173,228,200,0,192,128,96,192,144,116,201,48};
我想將這些值作為(ASCII / Windows-1252)字符寫入文件中。
HOW IT SHOULD LOOK LIKE: ’À€à¹˜ðÀBHº¸X€¶(h`$였ÔÈ@@eü®
MY OUTPUT: ?À?à¹?ðÀBHº¸X?¶(h`$ì??ÔÈ@@eü®
如您所見,輸出中有些字符不會像我期望的那樣出現在文件中。 寫入我的文件的代碼:
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(output),"windows-1252");
try {
for (int c : istr) {
out.write(c);
}
} finally {
out.close();
}
那么,為什么某些特殊字符未正確寫入我的文件?
調用Writer.write(int)
,是要提供Unicode值。
例如,以您的第一個字符為例,您已經有了Unicode 146,又名U + 0092。 查看U + 0080到U + 00FF的Unicode圖表 ,這是“私人使用2”字符。 目前尚不清楚為什么您期望它以撇號出現。
如果您有要在文件中結尾的確切字節,則完全不應該使用Writer
,而應該使用OutputStream
。
outputstream是抽象類。 那么如何使用寫功能? 將漢字寫入excel文件時遇到類似的麻煩。 我以與提到的代碼非常相似的方式構建了代碼。 和OutputStreamWriter的接口= new OutputStreamWriter(new FileOutputStream(output),“ utf-8”); 我用= new OutputStream(new FileOutputStream(output),“ utf = 8”);
我能夠用此修改構建代碼,但是excel中的值仍然很亂
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.