Unicode 在XSLT输出中编码特殊字符

Unicode 在XSLT输出中编码特殊字符,unicode,vbscript,Unicode,Vbscript,我构建了一组脚本,其中一部分将XML文档从一个词汇表转换为另一个词汇表中文档的子集 出于我不清楚但显然不可协商的原因,目标平台(基于Java)要求输出文档在XML声明中包含“encoding=”UTF-8“,但文本节点中的某些特殊字符必须使用其十六进制unicode值进行编码-例如,“必须”替换为“””'等等。我还无法获得一个确定的列表,其中必须对字符进行编码,但它似乎不像“所有非ASCII”那样简单 目前,我使用ADODB在处理后直接检查输出文件的每一行,并在必要时替换字符,因此V

我构建了一组脚本,其中一部分将XML文档从一个词汇表转换为另一个词汇表中文档的子集

出于我不清楚但显然不可协商的原因,目标平台(基于Java)要求输出文档在XML声明中包含“encoding=”UTF-8“,但文本节点中的某些特殊字符必须使用其十六进制unicode值进行编码-例如,“必须”替换为“
””'等等。我还无法获得一个确定的列表,其中必须对字符进行编码,但它似乎不像“所有非ASCII”那样简单

目前,我使用ADODB在处理后直接检查输出文件的每一行,并在必要时替换字符,因此VBScript非常混乱。这是痛苦的缓慢,并且毫不奇怪的是,一些角色会被遗漏(并因此被目标平台核攻击)

虽然我可能会浪费时间“细化”VBScript,但长期目标是完全摆脱它,我确信必须有一种更快更准确的方法来实现这一点,最好是在XSLT阶段本身

有人能提出任何富有成效的调查途径吗


(编辑:我不相信字符映射就是答案——我以前看过它们,除非我弄错了,因为我的输入可能包含任何unicode字符,所以我需要一个包含所有字符的映射,除了我不想编码的字符之外……)

使用XSLT 2.0,您可以使用字符映射,请参阅



告诉序列化程序它必须生成与ASCII兼容的输出。这将迫使它为文本内容和属性值中的所有非ASCII字符生成字符引用。(如果在标签或属性名等其他位置存在非ASCII,序列化将失败。)

感谢您的回复。我不相信字符映射-我以前看过它们(将编辑我的帖子来提及这一点),除非我弄错了,因为我的输入可能包含任何unicode字符,我需要有一个包含所有字符的映射,除了我不想编码的字符之外……字符映射确实需要列出要编码的字符,但是如果您当前有一个VBScript来执行该任务,那么我不明白为什么您不能改为设置字符映射。或者您当前的算法是如何决定是否对字符进行编码的?目前,我检查每个字符是否与我最好的正则表达式相匹配(尽管有些知情!)猜测哪些字符不应该编码,然后在没有匹配的情况下进行编码。嗯,听起来好像字符映射没有帮助。整个描述有点含糊不清,据我所知,Xerces的Java平台有完全支持Unicode和UTF-8的XML解析器,因此我不知道除了使用XML解析器避免问题之外,还有什么建议可以做任何XML解析器都应该做的事,即支持Unicode。恐怕我对目标平台只有模糊的了解(但这完全是另一回事…)。您的建议完全可以避免这个问题,这是对的,但据我所知,该系统不进行任何XML解析,而是将所需的XML文档作为纯文本处理。可悲的是,对这一体系的改变似乎完全不可能实现。
<xsl:output encoding="us-ascii"/>