Xslt转换失去了特殊字符

时间:2012-11-12 14:54:41

标签: java xml xslt

我正在进行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" />
...

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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