当前位置: 首页 > 面试题库 >

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

孟健
2023-03-14
问题内容

我正在尝试将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");

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

我有以下两个 问题

1.还有其他更好的方法(步骤)来执行此转换吗?

2.为什么上述代码段无法进行转换?

提前致谢!!!


问题答案:

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


 类似资料:
  • 我需要将长数据格式(long)转换为宽格式(wide),条件如下(如果可能): 1) 所有数据文件都将是具有相同结构(id、名称、值)的长格式(long),但每个数据文件将具有不同的变量、值和变量数: 2) 每个数据文件将是不同的变量混合物(因子、整数、数字)。有些因素可能每个案例都有多个级别(从长远来看是水果和肉),我想为这些因素中的每个级别创建一个单独的虚拟变量(逻辑)。因子和数值变量的数量将

  • 问题内容: 我尝试使用json格式的文件作为输入。这是示例数据的片段。 可以在r中使用这种复杂的json格式制作一个csv,以便更平滑地处理数据吗? 例如,有以下基本类别:基本信息照片创建者位置类别网址 可以制作带有basic_information.id,creator.id等子类别类别的csv文件吗? 问题答案: 在研究您的答案时,我在评论中张贴了一些链接,但现在我非常确信这是解决问题的方法。

  • 问题内容: 我收到了JSON文件,但不知道如何读取。有转换器可以在其中生成漂亮的CSV文件,以便将其加载到MS Excel中吗?我不懂JSON,所以如果有人编写脚本或将我链接到可以完成此任务的脚本,那将非常棒。 我在http://json.bloople.net上找到了一些接近的东西,但是不幸的是,它是JSON到HTML。 编辑:jsonformat.com越来越近,但是它仍然不是CSV。 问题答

  • 在下面的示例中,我们正在尝试将“日期”从一种格式转换为其他格式,例如要转换为UTC格式,例如2021-07-26T18:37:15.490Z 有人能帮忙吗。 输入XML: 现有输出: XSLT代码: 参考URL:https://xsltfiddle.liberty-development.net/pNEj9dB/1

  • 本文向大家介绍Python实现把utf-8格式的文件转换成gbk格式的文件,包括了Python实现把utf-8格式的文件转换成gbk格式的文件的使用技巧和注意事项,需要的朋友参考一下 需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: 代码讲解: 函数ReadFile的第二个参数指定以utf-8格式的编码方式读取文件,返回的结果content为Unicode然后,在将Unicode

  • 我使用的是Java8,我有一个方法接受长格式参数的日期,并从库返回中的日期。 在java版本<8之前,我使用,但是现在我需要使用,但是我找不到关于如何将值转换为的文档。 现在: 谢谢你的帮助!