【问题标题】:Encoding of input file for XSLT 2.0 function unparsed-text()XSLT 2.0 函数 unparsed-text() 的输入文件编码
【发布时间】: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.mdfile.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


【解决方案1】:

正如 Martin 所说,您提供的证据表明该文件是在 Windows-1252 中编码的,因此unparsed-text('file.md', 'utf-8') 拒绝它是正确的。

【讨论】:

  • 看来我误读了file2.md 的编码(只是我忘记在更改编码之间保存文件)。马丁完美地解释了错误的原因。它扭曲了我的头。谢谢你们!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 2021-04-03
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多