当存在特殊字符时,CSV 到 XML 的转换在 Saxon 中失败
CSV to XML transformation fails in Saxon when special characters are present
我正在评估Andrew Welch's CSV to XML-Converter in XSLT 2.0:
到目前为止,如果我像这样转换没有特殊字符的 CSV,它对我有用:
ID, Title, Type
152733,Test1,Type1
152757,Test3,Type2
152759,Test4,Type2
但是如果我尝试像这样用德语 "Umlaut" 转换 CSV:
ID, Title,Type
152733,Test1,Type1
152757,Test3,Type2
152759,Täst4,Type2
输出为"Cannot locate : test12.csv".
所以在我看来,如果文本包含特殊字符,函数 fn:unparsed-text-available
将不起作用。知道如何解决这个问题吗?
Saxon 版本为 Saxon-HE 9.7.0.1。
将文件编码传给unparsed-text()
。
我正在做一个有根据的猜测(*):
<xsl:variable name="csv" select="unparsed-text($pathToCSV, 'Windows-1252')" />
(*) UTF-8 是 unparsed-text()
的 $encoding
参数的默认值。这意味着如果读取文件失败,那么它显然不是 UTF-8,而是传统(即单字节)编码。德语变音符号表明该文件是在典型的 "Western Europe" 配置中创建的,其中 Windows-1252
或 iso-8859-1
是默认的旧编码。
我正在评估Andrew Welch's CSV to XML-Converter in XSLT 2.0:
到目前为止,如果我像这样转换没有特殊字符的 CSV,它对我有用:
ID, Title, Type 152733,Test1,Type1 152757,Test3,Type2 152759,Test4,Type2
但是如果我尝试像这样用德语 "Umlaut" 转换 CSV:
ID, Title,Type 152733,Test1,Type1 152757,Test3,Type2 152759,Täst4,Type2
输出为"Cannot locate : test12.csv".
所以在我看来,如果文本包含特殊字符,函数 fn:unparsed-text-available
将不起作用。知道如何解决这个问题吗?
Saxon 版本为 Saxon-HE 9.7.0.1。
将文件编码传给unparsed-text()
。
我正在做一个有根据的猜测(*):
<xsl:variable name="csv" select="unparsed-text($pathToCSV, 'Windows-1252')" />
(*) UTF-8 是 unparsed-text()
的 $encoding
参数的默认值。这意味着如果读取文件失败,那么它显然不是 UTF-8,而是传统(即单字节)编码。德语变音符号表明该文件是在典型的 "Western Europe" 配置中创建的,其中 Windows-1252
或 iso-8859-1
是默认的旧编码。