gpt4 book ai didi

java - 将 Shift_JIS 格式转换为 UTF-8 格式

转载 作者:行者123 更新时间:2023-12-02 03:18:19 32 4
gpt4 key购买 nike

我正在尝试将 Shift_JIS 格式的文件转换为 UTF-8 格式。为此,我的方法如下:

  1. 读取 Shift_JIS 文件
  2. 获取每行的字节并将其转换为 UTF-8
  3. 创建新文件并将 UTF-8 转换后的值写入其中

问题是在第 2 步没有发生转换。我使用下面的代码将 Shift_JIS 转换为 UTF-8:

InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
byte[] b = line.getBytes("Shift_JIS");
String value = new String(b, "UTF-8");

如果需要任何其他信息,请告诉我。

我有以下 2 个问题:

<强>1。还有其他更好的方法(步骤)来进行此转换吗?

<强>2。为什么上面的代码 fragment 不能用于转换?

提前致谢!!!

最佳答案

@VicJordan 发布的答案不正确。当您调用getBytes()时,您将获取根据系统 native 字符编码编码的字符串的原始字节(可能是也可能不是UTF-8)。然后,您将这些字节视为以 UTF-8 编码,但它们可能并非如此。

更可靠的方法是将 Shift_JIS 文件读入 Java 字符串。然后,使用 UTF-8 编码写出 Java 字符串。

InputStream in = ...
Reader reader = new InputStreamReader(in, "Shift_JIS");
StringBuilder sb = new StringBuilder();
int read;
while ((read = reader.read()) != -1){
sb.append((char)read);
}
reader.close();

String string = sb.toString();

OutputStream out = ...
Writer writer = new OutputStreamWriter(out, "UTF-8");
writer.write(string);
writer.close();

关于java - 将 Shift_JIS 格式转换为 UTF-8 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992097/

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