我正在评估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。
答案 0 :(得分:3)
将文件编码传递给unparsed-text()
。
我在这里做了一个有根据的猜测(*):
<xsl:variable name="csv" select="unparsed-text($pathToCSV, 'Windows-1252')" />
(*) UTF-8是$encoding
unparsed-text()
参数的默认值。这意味着如果读取文件失败则显然不是UTF-8,而是传统(即单字节)编码。德语变音符号表明该文件是在典型的“西欧”配置中创建的,其中Windows-1252
或iso-8859-1
是默认的遗留编码。