java - Xslt 转换丢失特殊字符

标签 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" />
...

如何解决这个问题?

最佳答案

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

关于java - Xslt 转换丢失特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345918/

相关文章:

java - HALF_EVEN 舍入不起作用

c# - 如何使用 C# 从 XML 中删除重复属性

xml - 在 R 中解析具有重复元素名称的 XML

java - 从项目目录而不是原始目录应用的相对文件路径

xml - 使用 xslt 将元素复制到新的命名空间

xml - XSLTProcessor.transformToFragment( ) 在 Microsoft edge 上返回 null

java - 二维数组,如何以编程方式添加新的数组元素? java

java - 什么是 Java/SpringBoot 中的井号 (#)?

java - 在 JavaFx 中,在向 ComboBox 对象添加操作后,如何使 ComboBox 可编辑

php - XML "tree"到多级 html 列表