【问题标题】:BufferedReader readLine has null bytes unlike String() -- different encoding?BufferedReader readLine 具有与 String() 不同的空字节 - 不同的编码?
【发布时间】:2021-09-19 22:07:09
【问题描述】:

在下面我试图打印一行的某些部分,但是我只从输入文件中的字符串中获取交替的空字符。

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream( cmdLnArgs[0] )));
String s;
while ( (s = br.readLine()) != null ) {
    String[] columns = s.split( "\t" );
    String out = "/storage/37C4-1314/Music/" + columns[1] + "/" + columns[3] + "\n";
    System.out.print( out );
}

为什么会发生以下情况?... [事实上我无法复制/粘贴,因为空值!]:

/storage/37C4-1314/Music/S a m e O l e L o v e 。 m p 3

即:

即使是“+ new String(columns[3].getBytes("UTF-8"),"UTF-8")”也不适合我。 this 也没有。

【问题讨论】:

  • 看来FileInputStream 获取了 Unicode (UTF-16) 中的字节?
  • @JosefZ -- 我相信你是对的,也许我可以通过解码为 UTF-8 的“扭曲”,但我希望有一种更简单的方法来读取 txt 中的行文件,然后将子集写回(写入以 .m3u 结尾的 txt 文件,因为我正在将播放列表从 iTunes 转换为我的 Android 列表)

标签: character-encoding bufferedreader


【解决方案1】:

在尝试了很多组合之后,以下终于奏效了:

    FileInputStream fis = new FileInputStream( cmdLnArgs[0] );
    InputStreamReader isr = new InputStreamReader(new FileInputStream( new File(cmdLnArgs[0]) ), "UTF-16");
    BufferedReader br = new BufferedReader( isr );

【讨论】:

    猜你喜欢
    • 2015-05-17
    • 2012-07-19
    • 1970-01-01
    • 2021-10-22
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多