这是当然的
因为你加了"gbk"
那么程序读的时候是以GBK字符集读的
但在linux它显示默人编码就可能不是了,所以你在new String 的时候也要指明的
*******二次回复************
你说得对.在windows下一定是正常的,因为你安装的是简体中文版的XP (它的默认字符集就是GBK),如果你装的是E文版的,问题一样会出现的.javaJVM默认的字符集是Unicode
所以解决java中文乱码的思路也只有两点
1,指明以何种字符集读入的
2,指明以何种字符集形式输出
(楼上Timmy_Dong的做法,也是出于这两点考虑的,以后你用到mysql的时候,这种问题在windows下也会出现)
如果是读文件的话要注意一点,它是以byte形式读入的,具体的操作就自己考虑了
我之前处理 文件都是用RandomAccessFile,只能给你一些参考吧。
文件乱码问题,只要读的时候设置好读取文件所对应的字符集就可以了。
比如".sql" 如果是GBK编码的,那么就设置GBK。
RandomAccessFile raf = new RandomAccessFile(filePath, "r");
byte[] buffer = new byte[5];
raf.read(buffer);
String strFieldValue = new String(buffer, "GBK");
存在一种可能,就是你的文件是用ftp传到Linux的,ftp默认的传输方式是acsii,这过程可能会改变文件内容。
ftp时采用binary模式就可以了。具体是:
ftp server
username :
password :
b // 指定binary模式
send .sql文件