我试图从XML ref
显示英镑符号。
我在文件files = sklearn.datasets.load_files(dir_path, encoding="iso-8859-1")
中使用XSLT 2和编码,而是向我显示(currencySymbol="£")
。
我尝试了不同的方法,使用<xsl:output encoding="ISO-8859-15"/>
,在�
内声明UTF-8
但仍然没有运气。我愿意接受建议。
答案 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头中的媒体类型(内容类型)是什么?