编程语言
首页 > 编程语言> > java – 将Shift_JIS格式转换为UTF-8格式

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

作者:互联网

我试图将Shift_JIS格式的文件转换为UTF-8格式.为此,下面是我的方法:

>读取Shift_JIS文件
>每行的getBytes并将其转换为UTF-8
>创建新文件并将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.为什么上面的代码段无法进行转换?

提前致谢!!!

解决方法:

@VicJordan发布的答案不正确.当您调用getBytes()时,您将获得在系统的本机字符编码(可能是也可能不是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();

标签:android,java,utf-8,vcf,shift-jis
来源: https://codeday.me/bug/20191007/1865946.html