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 エンジンのシリアル化された出力を 16 進エディターで確認する必要があります。

于 2012-11-12T17:27:35.327 に答える