首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java编写纯"windows-1252“文件

Java编写纯"windows-1252“文件
EN

Stack Overflow用户
提问于 2012-11-16 20:35:05
回答 2查看 1.1K关注 0票数 1

我得到了下面的十进制ascii值数组

代码语言:javascript
复制
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)字符写入到文件中。

代码语言:javascript
复制
HOW IT SHOULD LOOK LIKE:    ’À€à¹˜ðÀBHº¸X€¶(h`$였ÔÈ@@eü®
MY OUTPUT:                  ?À?à¹?ðÀBHº¸X?¶(h`$ì??ÔÈ@@eü®

正如您很容易看到的,我的输出中有一些字符不会像我期望的那样出现在文件中。写我的文件的代码:

代码语言:javascript
复制
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(output),"windows-1252");
    try {
        for (int c : istr) {
            out.write(c);
        }
    } finally {
        out.close();
    }

那么为什么一些特殊字符没有正确地写入我的文件呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-16 20:38:49

当您调用Writer.write(int)时,您需要提供一个Unicode值。

以你的第一个字符为例,你得到了Unicode146,也就是U+0092。看一下Unicode chart for U+0080 to U+00FF,这是“私有使用2”字符。不清楚为什么你会期望它以撇号的形式出现。

如果你已经得到了你想要在文件中结束的确切字节,那么你根本不应该使用Writer --你应该只使用OutputStream

票数 3
EN

Stack Overflow用户

发布于 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中的值仍然是胡言乱语。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13416691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档