【问题标题】:xml with special character, encoding utf-8带有特殊字符的xml,编码utf-8
【发布时间】:2011-02-21 00:34:09
【问题描述】:

我有几个简单的问题,因为我在阅读所有不同的回答时感到困惑。

1) 如果我有一个带有 prolog 的 xml:<?xml version="1.0" encoding="utf-8" ?>,我将用 Java 解组它(例如:JaXB)。我想,我不能把 CROSS OF LORRAINE (http://www.fileformat.info/info/unicode/char/2628/index.htm) 放进去,但是我可以把 "\u2628" 放进去,对吗?

2) 我也听说 UTF-8 不包含它,但是任何 Unicode 中的内容都可以通过编码 UTF-8(或 UTF-16)保存,以下是本页的示例:

UTF-8(十六进制)0xE2 0x98 0xA8 (e298a8)

我的推理正确吗?我可以使用这种形式并将其放入带有 utf-8 编码的 xml 中吗?

【问题讨论】:

  • (注意 \u2628 是 Java 源文件语法,用于将 Unicode 字符写为转义值。正如 Eugene 下面所说,在 XML 中,它是 ☨)

标签: java xml encoding utf-8


【解决方案1】:

应该没问题 - UTF-8 可以编码任何 Unicode 字符。

XML 对控制字符(U+0000 到 U+001F)有一些限制,但 U+2628 应该没问题。

(我个人更喜欢去 unicode.org 获取明确的代码图表,但 U+2628 肯定会出现here。)

您不必担心 UTF-8 方面的问题 - 您应该能够直接将字符放入数据中,并让 JAXB 进行编码。

【讨论】:

  • XML 中的受限字符非常痛苦,但我有一个正则表达式:[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f-\x84\x86-\x9f]
  • 好的,所以我可以发送以下之一:\u2628 或 ☨在 XML 文件中,JAXB 应该从这个 xml 创建一个对象,对吧?
  • @Sergio \u 版本不起作用 - 这是一个 Java 转义码,有效。我相信 ...;版本应该可以工作,但你有什么理由不只包含角色本身吗?
  • 不,我不知道。我很好奇-我现在不能尝试,这就是问的原因。感谢您的帮助!
【解决方案2】:

如果你的序言为 xml 指定了 utf-8 编码:

<?xml version="1.0" encoding="utf-8" ?>

那么你可以直接使用utf-8字符,也可以将它们编码为☨

【讨论】:

  • 你能给我提供在那种情况下使用 utf-8 的例子吗?
  • utf-8是多字节编码,所以9768码的符号可以直接表示,无需特殊编码。
【解决方案3】:

还有 1 个补充...

仅在序言中指定编码是不够的。您需要确保使用正确的编码对内容进行序列化。

【讨论】:

    猜你喜欢
    • 2020-09-20
    • 2014-06-15
    • 2014-02-14
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    相关资源
    最近更新 更多