java - Buffer Reader 俄语字符编码字符集

标签 java linux

目前我们面临一些问题,其中俄语字符被转换为垃圾数据,这些数据在记事本中被视为矩形。下面是我们正在使用的代码,代码在 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/

相关文章:

JavaFX 替代品作为 Java 和 Linux 思维编码器?

Java : Populate arraylist with for loop

java - Java 和 Python 的最佳 GUI 工具包/框架

python - 两台服务器之间进行通信 - Amazon SQS/SNS?

linux - 如何从连接到套接字的 UnixStream 一次读取一点?

php - 如何通过shell在php中获取在后台exec中运行的进程的pid

java - 如何检查时间戳是否早于特定月份数?

java - Math.random() 使用安全吗?

java - 在 IIS 中运行 Java Web 应用程序

linux - 在 linux 上开发,root 还是用户?