MUY*_*ium 2 xslt encoding character-encoding libxml2
我已经使用xsltproc将一些xml转换为另一个xml.
xsltproc iso8859_1.xslt iso8859.xml
Run Code Online (Sandbox Code Playgroud)
并且重音符不正确(我的Linux中的$ LANG是en_US.ISO-8895-1).
如果我使用
xsltproc iso8859_1.xslt iso8859.xml \
| iconv --from-code=utf-8 --to-code=iso-8859-1
Run Code Online (Sandbox Code Playgroud)
重点出现正确.(也在我生成的HTML文档中)
在xsltproc命令之后如何在不调用新管道的情况下正确显示重音符号?
如果要以特定编码编写输出XML,则需要在xsl:output指令上指定
<xsl:output method="xml" encoding="ISO-8859-1" />
Run Code Online (Sandbox Code Playgroud)
以这种方式配置编码而不是稍后修复它的最大好处iconv是,它意味着XML序列化器知道目标编码将是什么,并且如果样式表试图输出在所选字符编码中不可表示的任何字符,那么例如,它们将被保存为字符引用而不是在iconv时间上消失
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="ISO-8859-1" />
<xsl:template match="/">
<example>???</example>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
运行任何XML文档都会产生
<?xml version="1.0" encoding="ISO-8859-1"?>
<example>אבג</example>
Run Code Online (Sandbox Code Playgroud)
分别代表א,ב和ג的三个字符引用(记住希伯来语从右到左阅读).
| 归档时间: |
|
| 查看次数: |
2245 次 |
| 最近记录: |