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

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

  1. 读取Shift_JIS文件
  2. 每行的getBytes并将其转换为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");

请让我知道是否需要其他信息。

我有以下两个 :

提前致谢!!!

回答:

@VicJordan发布的答案不正确。调用时getBytes(),您将获得以 (可能为UTF-8,也可能不是UTF-8)

的字符串的原始字节。然后,您将这些字节当作是用UTF-8编码的字节,可能不是。

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

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();

以上是 将Shift_JIS格式转换为UTF-8格式 的全部内容, 来源链接: utcz.com/qa/435392.html

回到顶部