数据流生成文件乱码问题

bhwhy 2008-12-18 02:17:15
先生成这个文件,然后下载。现在出现了这样一个问题,服务器是linux系统,内码utf-8,我们要求文件的格式是shift_jis
生成文件的主程序见下面,我在本机win环境下运行正常,放到linux上、汉字部分还有像全角的-全变成乱码。那位高手指点下啊。

FileOutputStream outStream = new FileOutputStream(filePath);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream, "Shift_JIS");
BufferedWriter outBuffer = new BufferedWriter(outWriter);

StringBuilder sline = null;
try {
for (int i = 0; i < resultLength; i++) {
sline = new StringBuilder("");
if ("9".equals(rss[i][0].toString().trim())) {
getSaiken9(sline, rss, i);
}

if ("1".equals(rss[i][0].toString().trim())) {
getSaiken1(sline, rss, i);
}
sline.append("\n");
outBuffer.write(new String(sline.toString().getBytes(), "Shift_JIS"));
}

outBuffer.close();
outWriter.close();
outStream.close();



} catch (IOException e) {
throw e;
}
...全文
210 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
云上飞翔 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 bhwhy 的帖子:]
先生成这个文件,然后下载。现在出现了这样一个问题,服务器是linux系统,内码utf-8,我们要求文件的格式是shift_jis
生成文件的主程序见下面,我在本机win环境下运行正常,放到linux上、汉字部分还有像全角的-全变成乱码。那位高手指点下啊。

FileOutputStream outStream = new FileOutputStream(filePath);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream, "Shift_JIS");
BufferedWriter outBuffe…
[/Quote]

答:将
outBuffer.write(new String(sline.toString().getBytes(), "Shift_JIS"));

改为:

outBuffer.write(sline.toString(), "Shift_JIS");

就行了


macleane 2008-12-19
  • 打赏
  • 举报
回复
注意移植问题的话,在getBytes(),new String()类似的方法后面都要指明编码方式。如果不指明会使用系统默认的,那在不同的机器上得到的结果就会不一样
wfeng007 2008-12-19
  • 打赏
  • 举报
回复
你要求系统管理员把 os的编码设置为 GBK就好了。。。
tiyuzhongxin789 2008-12-18
  • 打赏
  • 举报
回复
windows默认的是gbk...
hbgzg3006 2008-12-18
  • 打赏
  • 举报
回复
楼住 windows默认的是gbk,你得到的字节是gbk的,你是想转换成utf-8?(我不懂linux),
如果是这样那肯定就会乱码了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧