磅符号没有在HTML中显示XSLT2

时间:2018-04-10 15:04:20

标签: html encoding xslt-2.0 saxon

我试图从XML ref显示英镑符号。

我在文件files = sklearn.datasets.load_files(dir_path, encoding="iso-8859-1") 中使用XSLT 2和编码,而是向我显示(currencySymbol="£")

我尝试了不同的方法,使用<xsl:output encoding="ISO-8859-15"/>,在内声明UTF-8但仍然没有运气。我愿意接受建议。

1 个答案:

答案 0 :(得分:1)

当我运行查询时

net.sf.saxon.Query -qs:"<a>£</a>" -o:/Users/mike/Desktop/temp/pound.xml !encoding=iso-8859-15

我得到一个十六进制内容为

的文件
0000: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31   <?xml version="1
0010: 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 69 73   .0" encoding="is
0020: 6F 2D 38 38 35 39 2D 31 35 22 3F 3E 3C 61 3E A3   o-8859-15"?><a>£
0030: 3C 2F 61 3E                                       </a>

也就是说,“£”符号被正确编码为xA3。

如果我现在使用查询选项将其更改为HTML

-qs:"<html><head/><body><a>£</a></body></html>" -o:/Users/mike/Desktop/temp/pound.xml !encoding=iso-8859-15 !method=html

十六进制输出

0000: 3C 68 74 6D 6C 3E 0A 20 20 20 3C 68 65 61 64 3E   <html>¿   <head>
0010: 0A 20 20 20 20 20 20 3C 6D 65 74 61 20 68 74 74   ¿      <meta htt
0020: 70 2D 65 71 75 69 76 3D 22 43 6F 6E 74 65 6E 74   p-equiv="Content
0030: 2D 54 79 70 65 22 20 63 6F 6E 74 65 6E 74 3D 22   -Type" content="
0040: 74 65 78 74 2F 68 74 6D 6C 3B 20 63 68 61 72 73   text/html; chars
0050: 65 74 3D 69 73 6F 2D 38 38 35 39 2D 31 35 22 3E   et=iso-8859-15">
0060: 0A 20 20 20 3C 2F 68 65 61 64 3E 0A 20 20 20 3C   ¿   </head>¿   <
0070: 62 6F 64 79 3E 3C 61 3E A3 3C 2F 61 3E 3C 2F 62   body><a>£</a></b
0080: 6F 64 79 3E 0A 3C 2F 68 74 6D 6C 3E               ody>¿</html>

这又是正确的。

所以我认为如果这个HTML没有正确显示,问题不在XSLT端,而是在显示端。所以问题是,你是如何查看文件的?

iso-8859-15是一种相当不寻常的编码选择,而utf-8现在更加正常。如果两者都没有正确显示,那么我认为我们需要知道:

(a)您使用什么软件来显示文件

(b)如果这是一个浏览器,那么    (i)哪个浏览器    (ii)从服务器检索文件时使用的HTTP头中的媒体类型(内容类型)是什么?