【问题标题】:Unknown Character in Netbeans and ConsoleNetbeans 和控制台中的未知字符
【发布时间】:2014-01-08 22:49:42
【问题描述】:

我有一个以 utf-8 数据编码的文本文件“abc.txt”,它是来自wikipedia page:
(^_^) happy 的一组表情符号

我的代码将此信息从文件中提取到 netbeans 标准输出
我的代码:

public static void main(String[] args) throws FileNotFoundException {
    Scanner sc=new Scanner(new File("abc.txt"));
    while(sc.hasNext()){
        System.out.println(sc.nextLine());
    }
}

在 netbeans 中的输出是这样的:

在控制台中,输出为:

这个角色是什么?
我该如何移除它?

【问题讨论】:

  • 从您的文件中删除所有内容并自己编写,只是为了检查您的情况出了什么问题。
  • @Nomanaliabbasi :我在记事本中手动输入happy,以 UTF-8 编码保存为“abc.txt”并尝试了该程序。在开头给出相同的不可打印字符。 (显然是 BOM)
  • 将编码从 UTF-8 更改为 unicode 似乎可以解决问题。 BOM WIKI
  • "如果将文件保存为 UTF-8,记事本会将 BOM(字节顺序标记)EF BB BF 放在文件开头。" here.

标签: java netbeans unicode


【解决方案1】:

widows 编辑器添加的文件开头有一个不可打印的字符。需要在文件中删除或通过Java代码跳过。

【讨论】:

  • 感谢您的意见。我在记事本中手动输入happy,以UTF-8 编码保存为“abc.txt”并尝试了该程序。在开头给出相同的不可打印字符。 UTF-8 文档这样做是标准的吗?
  • 对不起,我好久没用windows了:),windows编辑器在文件的开头加了一个特殊的两个字节来表示它是UTF8文件:),把它们去掉。我不推荐使用 Windows 工具来执行此操作。在 Netbeens 中试用编辑器。
【解决方案2】:

控制台输出看起来像一个 UTF-8 编码的Byte Order Mark(BOM,U+FEFF),字节 0xEF 0xBB 0xBF,根据某些旧的 8 位字符编码被误解。

要么在没有 BOM 的情况下保存文件,要么让你的程序在数据开始时识别并跳过 BOM。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多