0

我正在做 XSLT 转换,编码有问题,因为我在转换后丢失了克罗地亚特殊字符。我正在使用 javax.xml.transform.Transformer 并且我正在设置这样的编码:

transformer.setOutputProperty( OutputKeys.ENCODING, "UTF-8");

我们使用的是 Websphere 8,并且定义了以下 JVM 参数

-Dclient.encoding.override=UTF-8
-Dfile.encoding=UTF-8

转换定义如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:msg="http://b25/ics/ed/CC305A" xmlns:ct="http://b25/ics/complexTypes">
<xsl:output encoding="UTF-8" indent="yes" method="xml" />
...

我怎么解决这个问题?

4

1 回答 1

1

丢失(或错误编码)发生在数据进入 XSLT 引擎之前或离开它之后。(字符编码问题几乎总是出现在软件产品之间的边界上,当数据提供者认为它是一种编码而接收者认为它是另一种编码时)。因此,解决问题的第一步是找出是哪种情况。准确地找出输入中的内容很容易:使用类似这样的东西<xsl:comment><xsl:value-of select="string-to-codepoints(.)"/></xsl:comment>会告诉您您提供给转换的整数 Unicode 代码点。要准确找出输出中的内容,您需要在十六进制编辑器中查看 XSLT 引擎的序列化输出。

于 2012-11-12T17:27:35.327 回答