1

我正在制作这个应用程序来更改字幕文件。当我测试它时,我遇到了一个奇怪的问题,当我在非英语(例如波斯语)上测试它时,程序不会读取文件。这就是我在程序中阅读字幕的方式:

    Scanner sub = null;
    try {
      sub = new Scanner(new File(address));
    } catch (FileNotFoundException ex) {
      ex.printStackTrace();
    }
while(sub.hasNext()){
  String sentence = sub.nextLine();
  //some magical stuff here :)
}

其中地址是 .srt 文件的保存位置的字符串。

我该怎么做才能让程序读取文件?

4

2 回答 2

8

创建时选择不同的编码Scanner

类似这样的东西可能会起作用:

new Scanner(new File(address), "UTF-16");

这将更改扫描仪以使用 UTF-16 编码读取文件。

您可以在此处阅读有关编码的更多信息。

于 2013-08-08T21:06:53.833 回答
2

这是我可以从 java 文档中找到的构造函数。尝试查找输入文件的编码并使用此构造函数。我认为这应该有效。

 /**
 * Constructs a new <code>Scanner</code> that produces values scanned
 * from the specified input stream. Bytes from the stream are converted 
 * into characters using the specified charset.
 *
 * @param  source An input stream to be scanned
 * @param charsetName The encoding type used to convert bytes from the
 *        stream into characters to be scanned
 * @throws IllegalArgumentException if the specified character set
 *         does not exist
 */
public Scanner(InputStream source, String charsetName) {
    this(makeReadable(source, charsetName), WHITESPACE_PATTERN);
}
于 2013-08-08T21:08:58.530 回答