【发布时间】:2012-02-16 07:10:48
【问题描述】:
如果我确保始终使用 ISO-8859-1 作为编码,则 ¬ 字符(ISO-8859-1 中的 0xAC)适用于普通文本。但是,在属性中使用它时,它会转义为:%C2%AC。我知道它需要为 url 转义,但不是为什么它以与 UTF-8 相同的方式转义它,而不仅仅是%AC,因为我期望它对 ISO-8859-1 进行转义。
由于转义在输出 html 文件中,唯一的结论是 xslt 处理器是原因。
例子:
对我来说生成:
使用 xsltproc 生成输出,针对 libxml 20707、libxslt 10126 和 libexslt 815 编译。这是在 #! Linux (amd64)。我也尝试过:xmlstarlet tr(也使用 libxml)、xalan 和 google chrome(通过添加 <?xml-stylesheet ... >,请参阅 input_ss.xml 标签),结果相同。
Opera 根本不会转义它,它允许 ¬ 在 url 和属性中按字面意思使用。
这是 xslt 的标准行为还是属性转义方式中的错误?无论哪种方式,除了用 %AC 替换 %C2%AC 之外,还有其他解决方案吗?记住,对于其他有效的 ISO-8859-1 和在 UTF-8 中无效的字符,几乎可以肯定是相同的。
【问题讨论】:
标签: utf-8 iso-8859-1 xalan xslt