Encoding XSLT:字符(破折号)编码

Encoding XSLT:字符(破折号)编码,encoding,character-encoding,xslt-1.0,Encoding,Character Encoding,Xslt 1.0,我陷入了一个非常严重的问题,请帮助我 我的输入文件中有一些字符(破折号),SWITCH–Ethernet Access是以下输入数据中有破折号字符的字段 当我使用XSLT进行转换时,会出现以下错误 ERROR: XSLT Service failed. Failed to transform document Exception: Invalid byte 1 of 1-byte UTF-8 sequence. 以下是XSLT代码: SOAPAction:“urn:上载” 内容类型:te

我陷入了一个非常严重的问题,请帮助我

我的输入文件中有一些字符(破折号),SWITCH–Ethernet Access是以下输入数据中有破折号字符的字段


当我使用XSLT进行转换时,会出现以下错误

ERROR: XSLT Service failed. Failed to transform document Exception: Invalid byte 1 of 1-byte UTF-8 sequence.
以下是XSLT代码:


SOAPAction:“urn:上载”
内容类型:text/xml;字符集=UTF-8
]]>    

请找出在UTF-8中支持en-dash时此XSLT代码失败的原因。

可能的原因是输入文件实际上未进行UTF-8编码。如果它实际上是windows-1252(windows拉丁语1)编码的,那么它中的EN-DASH显示为八位字节96(十六进制);当数据被解释为UTF-8时,它会导致与报告的情况相同的错误情况

要检查这一点,请打开输入文件(例如,在记事本+)并将编码设置为ANSI。如果它看起来正常(在您期望的地方有一个破折号),那么我的分析是正确的,您需要使用Notepad++中的命令将文件转换为UTF-8,然后保存它


有很多方法可以改变文件的编码,我刚才提到了一个简单的方法。如果文件是动态生成的,则需要修改生成过程,或者可能将文件声明为windows-1252编码,尽管这通常不是一个好主意(限制可以使用的字符集)。

我已在notepad++中复制了数据,然后在UTF-8中对数据进行了编码,x96放在了en-dash的位置。如果我将这个文件转换成UTF-8格式,那么XSLT就可以正常工作。这是否意味着我必须将文件转换为UTF-8编码。但问题是文件是自动生成的,我无法更改其编码。我还有别的办法处理这件事吗。感谢您的帮助如果您可以影响数据文件的开头,您可以在那里添加
,以声明windows-1252编码。除此之外,我想您还需要影响用于打开数据文件的程序,告诉它使用windows-1252编码。如果该文件是通过HTTP访问的,您可以使用
内容类型
标题。是的,您是对的,在开始时添加,解决我的问题,现在我看看我的代码是否允许我添加此。。非常感谢你的帮助。