【发布时间】:2014-03-21 11:58:14
【问题描述】:
假设我将这个file.md 编码为UTF-8(.md 表示它是降价格式)
Hello world
This text is encoded in UTF-8.
然后我使用函数unparsed-text('file.md', 'UTF-8') 来处理它。这就像一个魅力。
当(假设)我使用我的母语(捷克语)特定字符之一时出现问题,例如file2.md:
Hello world
This character "š" is read like "sh" in english.
在unparsed-text() 中使用相同的编码参数我得到错误:
XTDE1200: 无法读取输入文件 file:/C:/file2.md (java.nio.charset.MalformedInputException):输入长度 = 1
file2.md 与file.md 具有相同的 UTF-8 编码,捷克字符在此字符集中,但 XSLT 处理器不接受它。如果我将编码参数更改为windows-1250 即。 unparsed-text('file2.md', 'windows-1250') 效果很好。
所以问题是,为什么我会收到这个错误?它是否与输入文件扩展名为 .md (.txt 有效)的事实有关。有办法解决吗?我真的希望能够在我的 xsl 样式表中使用与提供的输入文件相同的编码。
感谢您的回答。
【问题讨论】:
-
如果
unparsed-text('file2.md', 'windows-1250')可以正常使用该文件而unparsed-text('file2.md', 'UTF-8')无法正常工作,则该文件不是UTF-8 编码的,而是使用该Windows 代码页进行编码的。那么如何创建该文件,听起来您的编辑器没有使用 UTF-8。 -
对于第一个文件中的 ASCII 字符,UTF-8 的编码可能与 Windows-1250 相同,这就是为什么您不会收到仅包含 ASCII 字符的文件的错误.
标签: encoding markdown xslt-2.0 saxon xpath-2.0