我使用Servlet和Tomcat在elasticsearch之上创建了一个Web应用程序。我正在使用Saxon使用XSL样式表将XML转换为HTML网页。
我不确定为什么' - '在我的XML中转换为"?"在我的HTML中。
这是我的XML(标题字段)
的一部分<T>Director Brennan Speaks at the Council on Foreign Relations — Central Intelligence Agency</T>
您将观察到?(标题中的问号)。
我不确定为什么会这样。我正在使用编码&#34; UTF-8&#34;在我的XSL中。任何帮助将不胜感激。
答案 0 :(得分:1)
嗯,几乎可以肯定是某种字符编码问题。
要做的第一件事是检查XML中字符的编码。用于表示XML文件中字符的实际二进制/十六进制代码是什么? (您需要一些以十六进制显示文件的工具才能找到。请注意避免以可能会改变编码的方式复制文件。)然后检查实际编码是否与声明的编码一致,即是,文件头部的XML声明中出现的编码,假设有一个。
如果一切看起来都正确,则需要对HTML文件执行相同的操作。再次,在十六进制编辑器中查看HTML文件,并注意以可能更改编码的方式复制它。如果HTML文件内部不正确,则需要研究可能已损坏字符的所有转换步骤。但是,如果HTML文件是正确的,则需要查看用于查看HTML的步骤(例如,将其从Web服务器提供给浏览器。)
我认为两个最可能的原因是(a)XML文件的声明编码与实际内部编码不匹配,或者(b)您在浏览器中查看HTML文件并且HTTP标头或Charset参数导致它以错误的编码显示(或者更确切地说,解码)。
一件肯定不会影响它的事情是XSLT样式表的编码。