目前我们面临一些问题,其中俄语字符被转换为垃圾数据,这些数据在记事本中被视为矩形。下面是我们正在使用的代码,代码在 Java 1.8 的 Linux 服务器上执行
BufferReader buff=new BufferReader(new FileReader(new File("text.txt")));
String line;
StringBuffer result;
while((line=buff.readLine())!=null)
{
result.append(line).append('\n');
}
return result.toString.getBytes();
早期相同的代码用于使用 java 1.6 在 AIX 环境中工作。
任何人都可以给我提示可能出了什么问题。因为这似乎完全是环保的,因为没有进行任何代码更改。
最佳答案
您的代码似乎是将整个文件读入一个字节数组。这可以通过这种方式完成:
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);
}
关于java - Buffer Reader 俄语字符编码字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51863931/