簡體   English   中英

從包含不可映射字符的文件中讀取

[英]Reading from a file containing unmappable characters

我正在嘗試使用文件和掃描儀來讀取 .txt 文件並將其中的有用信息抓取到一個單獨的文件中。 其中一些文件包含中文字符,這會導致我的掃描儀拋出以下錯誤“java.nio.charset.UnmappableCharacterException:”。 漢字無關緊要,如何讓掃描儀忽略漢字,一直在文件的rest中搜索有用的信息呢?

這是代碼:

            try {
                File source = new File(this.parentDirectory + File.separator + this.fileName.getText());
                Scanner reader = new Scanner(source);
                StringBuilder str = new StringBuilder();
                while (reader.hasNextLine()) {
                    str.append(reader.nextLine());
                    str.append("\n");
                }
                if (reader.ioException() != null) {
                    throw reader.ioException();
                }
                reader.close();
                this.input.setText(str.toString());
            } catch (FileNotFoundException e1) {
                JOptionPane.showMessageDialog(this, "File not found!");
                return;
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

掃描器在外部字節序列和所有 Java 字符串使用的 16 位 Unicode 字符之間隱式轉換。

您需要知道用於外部數據(即文件內容)的實際編碼。 然后你聲明你的掃描儀為

  Scanner reader = new Scanner(file, charset);

正確完成后,就不會有“不可映射”的字符。

如果您沒有明確指定字符集,則會使用平台默認值,可能是 UTF-8。

或者,您似乎並沒有真正在很大程度上使用掃描儀; 你只是用它來收集線。 您可以降低一個級別並使用 FileInputStream 將文件讀取為字節序列,並使用您認為合適的任何啟發式方法來確定文件的“有用”部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM