当存在特殊字符时,Saxon中的CSV到XML转换失败

时间:2015-12-10 11:54:33

标签: xml csv xslt saxon

我正在评估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。

1 个答案:

答案 0 :(得分:3)

将文件编码传递给unparsed-text()

我在这里做了一个有根据的猜测(*)

<xsl:variable name="csv" select="unparsed-text($pathToCSV, 'Windows-1252')" />

(*) UTF-8是$encoding unparsed-text()参数的默认值。这意味着如果读取文件失败则显然不是UTF-8,而是传统(即单字节)编码。德语变音符号表明该文件是在典型的“西欧”配置中创建的,其中Windows-1252iso-8859-1是默认的遗留编码。