当前,我们面临一些问题,其中俄语字符已转换为垃圾数据,垃圾数据在记事本中被视为矩形。下面是我们正在使用的代码,这些代码正在具有Java 1.8的Linux服务器上执行
1 1
2 2
3 3
4 4
5 5
之前使用相同的代码在Java 1.6的AIX环境中工作。
任何人都可以给我提示可能出问题的地方。由于似乎没有进行任何代码更改,因此这似乎完全是环境问题。
答案 0 :(得分:0)
尝试一下
BufferedReader buff= new BufferedReader(
new InputStreamReader(
new FileInputStream(fileDir), "UTF-8"));
编辑
答案 1 :(得分:0)
您的代码似乎正在将整个文件读取为字节数组。可以通过以下方式完成:
static byte [] GetFileBytes (String filename)
throws java.io.FileNotFoundException,
java.io.IOException {
java.io.File f= new java.io.File (filename);
java.io.FileInputStream fi= new java.io.FileInputStream (f);
long fsize = f.length ();
byte b [] = new byte [(int)fsize];
int rsize= fi.read (b, 0, (int)fsize);
fi.close ();
if (rsize!=fsize) {
byte [] btmp= new byte [rsize];
System.arraycopy (b, 0, btmp, 0, rsize);
b= btmp;
}
return b;
}
或者,在您的代码中,您可以选择一种编码,并在两次转换中都使用它:
static byte [] GetFileByteArray (String filename)
throws Exception {
String cset= "ISO-8859-1"; /* any one-byte encoding */
java.io.BufferedReader buff=
new java.io.BufferedReader
(new java.io.InputStreamReader
(new java.io.FileInputStream(filename), cset));
String line;
StringBuffer result= new StringBuffer ();
while((line=buff.readLine())!=null)
{
result.append(line).append('\n');
}
return result.toString().getBytes(cset);
}