Java BufferedWriter未正确写入字符串

Java BufferedWriter未正确写入字符串,java,character-encoding,bufferedwriter,Java,Character Encoding,Bufferedwriter,我有一个程序可以通过telnet与数据库通信,之前我让它将响应打印到控制台System.out.println。现在我正在修改我的程序,以便它将响应写入一个文件,这样我就可以将程序作为服务/守护进程运行。然而,当使用BufferedWriter时,我不懂英语。文件资源管理器中的文件预览读取正确,但当我在记事本或升华文本2中打开文件时,我得到了这种奇怪的数字组合。这是我的代码和文件应该说的内容,而不是我打开文件时得到的内容 private static void logon() throws IO

我有一个程序可以通过telnet与数据库通信,之前我让它将响应打印到控制台System.out.println。现在我正在修改我的程序,以便它将响应写入一个文件,这样我就可以将程序作为服务/守护进程运行。然而,当使用BufferedWriter时,我不懂英语。文件资源管理器中的文件预览读取正确,但当我在记事本或升华文本2中打开文件时,我得到了这种奇怪的数字组合。这是我的代码和文件应该说的内容,而不是我打开文件时得到的内容

private static void logon() throws IOException {
    bout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("/mnt/javaprograms/ServerConsole/log.txt"), "UTF-8"));

    String loginString = "JAVA-TRANS\n";
    byte[] logon = loginString.getBytes();
    out.write(logon);
    out.flush();
    out.write(logon);
    out.flush();
    response = in.readLine();
    bout.write(response);
    bout.flush();
    while (!response.contains("OK")) {
        response = in.readLine();
        bout.write(response);
        bout.flush();
    }
    bout.flush();
    bout.close();
}
文件资源管理器预览:

欢迎使用mvBASE telnet服务器。您已连接到上的第54行 MILL6JAVA-TRANS

打开的文件读取:

5765 6c63 6f6d 6520 746f 2074 6865 206d
7642 4153 4520 7465 6c6e 6574 2073 6572
7665 722e 596f 7520 6172 6520 636f 6e6e
6563 7465 6420 746f 206c 696e 6520 3534
206f 6e20 4d49 4c4c 364a 4156 412d 5452
414e 5300 4f4b 

无论出于何种原因,文本编辑器设置为显示基础字节的十六进制表示形式。您必须将其更改为在适当的字符集中显示文本表示

比如说

public static void main(String[] args) throws Exception {
    String text = "Welcome to the mvBASE telnet server.You are connected to line 54 on MILL6JAVA-TRANS";
    byte[] bytes = text.getBytes(StandardCharsets.UTF_8);
    int space = 0;
    for (byte b : bytes) {
        System.out.print(Integer.toHexString(b));
        space++;
        if (space == 16) {
            System.out.println();
            space = 0;
        } else if (space % 2 == 0) {
            System.out.print(" ");
        }
    }
}
印刷品

5765 6c63 6f6d 6520 746f 2074 6865 206d 
7642 4153 4520 7465 6c6e 6574 2073 6572 
7665 722e 596f 7520 6172 6520 636f 6e6e 
6563 7465 6420 746f 206c 696e 6520 3534 
206f 6e20 4d49 4c4c 364a 4156 412d 5452 
414e 53

这就是你看到的+/-3个字符。

我编辑了我的文本编辑器升华文本2,以不显示十六进制。我想可能是我做错了什么,因为ST2和Windows记事本都显示了十六进制