【发布时间】:2018-10-09 06:56:39
【问题描述】:
我在以 unicode 编码显示字符时遇到问题。例如,在 XML 中,我有一个文本,我在 XSLT 的帮助下将其转换为 html。
文字是例如
此表单中的"Najlepší" 和字符“š”和“í”按应有的方式显示。但是我尝试使用此网站 http://itpro.cz/juniconv/ 将它们转换为 unicode(据说),因此文本现在看起来像 Najlep\u0161\u00ED,带有 \u0161 和 \u00ED 形式的“š”和“í”字符。
我希望转换后的字符可以正常显示,我尝试了 UTF-8、UTF-16、ISO-8859-1,到目前为止没有运气。
我的 XML 和 XSLT 相当简单。在此处显示的 XML 中,我尝试了各种字符编码和组合
<?xml version="1.0" encoding="UTF-8"?>
<test>
<element1>
<name>ľ š č ť ž ý á í é ☂ u"\U+010C" \u00C1 u"\U0001D504" \u0161 \u010D \u0165 \u0165 \u017E \u00FD \u00E1 \u00ED \u00E9</name>
</element1>
</test>
和 XSLT
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<head>
<meta charset="UTF-8"/>
</head>
<body>
<xsl:for-each select="test/element1">
<xsl:value-of select="name"/>
</xsl:for-each>
</body>
</html>
输出看起来像这样
我做错了什么?例如 Eclipses 插件资源包编辑器能够正确显示这些字符。
编辑:我没有意识到这会引起混淆 - 我需要的是,当 HTML 通过转换生成并在 Web 浏览器中打开时,它应该将 \u00C1 显示为 Á
【问题讨论】:
-
对我来说,它们似乎完全按照应有的方式显示。为什么要将它们转换成其他形式?
-
问:当它看起来“乱七八糟”时,你究竟是如何“展示”的?听起来您在 XML 中所做的一切都是正确的……而在 XSLT 中一切都是正确的……而且翻译后的文本甚至在 Eclipse 中也能正确显示。它究竟在哪里没有正确“显示”?问:UTF-8 是 XML 的正确编码吗?
-
@paulsm4 哦,我忘了 - 当我在任何网络浏览器中打开转换生成的 HTML 时,它看起来就像我写的一样,但我想转换“\u00C1”部分将文本转换为“ľš č”等普通字符
-
@SamiKuhmonen 他们需要采用这种形式,因为我们正在使用其他一些软件,这些软件无法以显示的形式解码字符,我们发现,该软件可以使用那些 Unicode 字符来做到这一点,但我们还需要正确显示它们,我无法做到
-
OK:所以问题是您正在使用此站点“转换”字符:itpro.cz/juniconv。它将 Unicode 转换为 Java 实体(例如
"\u010C"),但您真正想要的是转换为 XML 实体(例如&#010C)。
标签: xml xslt unicode utf-8 character-encoding