【问题标题】:Java: How to remove  character appearing before £Java:如何删除出现在 £ 之前的字符
【发布时间】:2018-08-09 18:37:54
【问题描述】:

每当我打印或写下 £ 符号,甚至用它做任何事情时,它总是显示为 £,而  没有任何理由存在。我试过用 unicode 写这个字符,但它仍然导致了这种奇怪的组合。有什么办法可以消除或阻止它发生?

public class GenericClass
{
    public static void main(String[] args)
    {
        System.out.println("£");
    }
}

这就是打印出来的全部内容:

【问题讨论】:

  • 你在哪里打印?可能是屏幕/工具等无法正确处理 unicode。
  • 只是到命令行,这不是问题,因为当我只是 System.out.println() 时它不起作用。
  • public class GenericClass { public static void main(String[] args) { System.out.println("£".substring(1)); } } 这对你有什么好处?
  • 这很好用,我研究一下子字符串,看看我如何将它应用到我需要的地方。谢谢
  • @Dr3amer17 这是我希望 StackOverflow 允许对 cme​​ts 投票的情况之一。你的提议完全是错误的。它完全有效的事实意味着£ 在编译时没有按预期进行编码。对于以 UTF-8 编码的 Unicode 字符,您的提议惨遭失败,以至于第二个字节的值与正在编码的代码点的值不匹配。 真正的解决方案是修复编码,而不是解决它。

标签: java string unicode printing file-writing


【解决方案1】:

您的源文件可能是 UTF-8,因此将 £ 视为两个 8 位字符:£

为了可移植性,您必须像这样在字符串文字中使用转义的 unicode 序列。

public class GenericClass
{
    public static void main(String[] args)
    {
        System.out.println("\u00A3");
    }
}

【讨论】:

    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2021-09-10
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多