java在AIX的乱码问题
package test;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class WriteFile {
public static void createFile(String fileName) {
try {
//String str1 = new String(fileName.getBytes("ISO8859_1"),"gb2312");
FileOutputStream fw = new FileOutputStream(fileName);
BufferedWriter stdout;
stdout = new BufferedWriter(new OutputStreamWriter(fw,"gb2312"));
String str= "可可在测试aaaaaaaaaaaaaaaa";
stdout.write(str);
stdout.flush();
fw.close();
stdout.close();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public static void main(String[] args) {
String encoding = System.getProperty("file.encoding");
System.out.println("file.encoding============="+encoding);
createFile(args[0]);
String str = "/home/topetl/lzz/东东VVVV.txt";
createFile(str);
}
}
将这个类单独打成了一个jar 包,在AIX下执行结果如下
[/home/topetl/lzz] java -jar ./createFile.jar /home/topetl/lzz/哦哦LL.txt
file.encoding=============ISO8859-1
[/home/topetl/lzz] ls -ltr
total 56
-rw-r----- 1 topetl etl 49 Apr 15 04:41 lock.out
-rwxr-x--x 1 topetl etl 612 Apr 15 04:51 sms.sh
-rwxrwxrwx 1 topetl etl 6 Apr 15 04:58 abc
drwxr-x--- 2 topetl etl 256 Apr 19 06:52 aaaa
-rw-r----- 1 topetl etl 71 May 8 09:54 ABC.AVL
-rw-r----- 1 topetl etl 1256 May 8 16:02 createFile.jar
-rw-r--r-- 1 topetl etl 26 May 8 16:02 哦哦LL.txt
-rw-r--r-- 1 topetl etl 26 May 8 16:02 ??VVVV.txt
[/home/topetl/lzz] cat ??VVVV.txt
可可在测试aaaaaaaaaaaaaaaa[/home/topetl/lzz] cat 哦哦LL.txt
可可在测试aaaaaaaaaaaaaaaa[/home/topetl/lzz]
如果文件名是传入的,就是正常
但是我自己在java中写的就是不正常的
文件中数据也是正常,但是如果不经过
“stdout = new BufferedWriter(new OutputStreamWriter(fw,"gb2312"));”
这样一个编码处理,也会是不正常的,之前也试过了
但是对于文件名该如何处理呢?
请大虾指教啊