gpt4 book ai didi

java - 无法在java中将UTF-8字符串转换并保存为ANSI

转载 作者:行者123 更新时间:2023-12-01 16:33:50 26 4
gpt4 key购买 nike

这是我的代码。我必须以 UTF-8 格式将字符串写入控制台,但以 ANSI 格式保存该字符串。当我打开文件时,它是 UTF-8 格式的。我该怎么办?

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
String message = bufferedReader.readLine();
bufferedReader.close();
String utfString = new String(message.getBytes(), "UTF-8");
String ansiMessage = new String(utfString.getBytes(), "WINDOWS-1251");
writeToFile(ansiMessage, "ANSI.txt", "WINDOWS-1251");
private static void writeToFile(String string, String path, String enc) throws IOException {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), enc));
writer.write(string);
writer.close();
}

最佳答案

首先,getBytes() 以默认字符集返回字符串的字节,通常为 UTF-16。其次,new String(bytes[], string) 将字节解释为提供的字符集中的字符串,但不会转换它们。所以:

new String(message.getBytes(), "UTF-8")

尝试将 UTF-16 字符串读取为 UTF-8,不好。然后:

new String(utfString.getBytes(), "WINDOWS-1251")

尝试将结果字符串读取为 WINDOWS-1251,同样糟糕。

我确定此时您的字符串已被破坏。

您只需调用 getBytes(Charset) 即可获取所需字符集中的字符串字节。但在您的情况下,您甚至不需要这样做,因为您的 writeToFile(...) 方法在写入文件时已经进行了字符集转换,因此您只需为其提供原始的消息即可。

关于java - 无法在java中将UTF-8字符串转换并保存为ANSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62001838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com