我得到了下面的十进制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();
}那么为什么一些特殊字符没有正确地写入我的文件呢?
发布于 2012-11-16 20:38:49
当您调用Writer.write(int)时,您需要提供一个Unicode值。
以你的第一个字符为例,你得到了Unicode146,也就是U+0092。看一下Unicode chart for U+0080 to U+00FF,这是“私有使用2”字符。不清楚为什么你会期望它以撇号的形式出现。
如果你已经得到了你想要在文件中结束的确切字节,那么你根本不应该使用Writer --你应该只使用OutputStream。
发布于 2012-11-20 19:03:55
outputstream是抽象类。那么如何使用write函数呢?我在向excel文件中写入中文字符时遇到了类似的问题。我构建代码的方式与前面提到的代码非常相似。OutputStreamWriter =new OutputStreamWriter(new FileOutputStream(output),"utf-8");我使用=new OutputStream(new FileOutputStream(output),"utf=8");
我可以使用这个修改来构建代码,但是excel中的值仍然是胡言乱语。
https://stackoverflow.com/questions/13416691
复制相似问题