- 论坛徽章:
- 0
|
Linux下生成文件名的时候乱码
编译和执行的时候已经加了编码参数,如下:
$JAVA_HOME/bin/javac -encoding GBK CodeTest.java
$JAVA_HOME/bin/java -Dfile.encoding=GBK CodeTest
LANG=en_US.UTF-8 乱码
LANG=en_US 正常
程序处理的代码块如下:
String testFileName = “测试文件名.txt”;
String testFileBody = “测试内容n测试内容n测试内容n”;
String testStrName = new String(testFileName .getBytes("GBK"), "8859_1");
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(testStrName), "GBK"));
OutputStreamWriter.write(testFileBody);
out.close(); |
得到的结果就是设定LANG=en_US.UTF-8时,文件名乱码文件内容正常,设定LANG=en_US是,文件名和内容都正常。
请教高手解答JAVA输出时候的编码方式,还有一点说明, 用jdk1.4的时候,LANG设置两个都正常,可是用jdk1.6的时候就发生以上的现象。
补充一点,如果是LANG=en_US.UTF-8, 转码代码用的是
String testStrName = new String(testFileName .getBytes("GBK"), "UTF-8");
[ 本帖最后由 shilinn 于 2009-3-11 11:34 编辑 ] |
|