【问题标题】:Extended charsets chars not reccognized and converting to ? mark扩展字符集字符无法识别并转换为?标记
【发布时间】:2013-01-01 16:40:06
【问题描述】:

我有一个字符串,其中包含一些特殊字符,例如“\u2012”,即Figure DASH。当我试图在控制台上打印这个时,我得到一个“?”标记而不是其符号。我有一个编辑器,我可以在其中使用 alt+numpad 插入符号,例如 alt+2012。在编辑器中,我可以看到符号将其保存在 xml 文件中并使用 nodevalue 获取值,我得到一个“?”标记。
总结一下,我面临阅读扩展拉丁字符集的问题。我需要的是当我插入这些符号并阅读它时,我应该得到类似 XXXX; 的东西。 请帮忙!

TIA :)

只是我有一个 String inpath = "À";,我想获取它的 unicode 值..like XXXX;

【问题讨论】:

  • \uXXXX&#xXXXX 和通过alt+2012 输入的单个字符都是不同的东西。如果您输入一个字符,它变成?,这意味着在保存、读取和输出文件的链条中的某个地方,它的编码没有正确处理。根据您提供的信息,无法再说明这一点。
  • windows平台上的java。
  • &#xXXXX 不是“À”的“Unicode 值”。 &#xXXXX 是该字符的 HTML 实体编码,仅在 HTML 上下文中相关。如果您想在 Java 应用程序/控制台/其他非 HTML 上下文中显示字符“À”是没有意义的。
  • 我同意你的观点,但有没有办法将À 解码为Àfileformat.info/info/unicode/char/00c0/index.htm
  • 要获取 1 个字符的字符串的 Unicode 值,请使用 "x".codePointAt(0)

标签: utf-8 latin1


【解决方案1】:

Windows 中的默认控制台编码是一些 MS-DOS 代码页,它们不支持该字符。您可以在运行程序之前尝试运行chcp 65001,但您可能还需要更改控制台字体。

只要您使用 UTF-8,您就不需要对任何其他字符做任何您不会做的事情。你在很多地方都没有这样做。您需要在代码中明确写入以 UTF-8 保存和读取文件,而不是依赖平台默认编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 2013-12-23
    • 2018-05-10
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多