我将utf-8编码的文本发送到wso2服务总线。服务总线将其解释为unicode。在标题中指定了编码,字符类型也设置为utf-8。
发送μ时,它将作为C2 B5发送。如果我在utf-8代码页上检查它的μ符号。但总线认为其C2 =Â且B5 =μ。
有谁知道如何预防或解决这个问题?
编辑:
我的客户发送给WSO32的json
接受:application / json,text / plain, / Content-Type:application / json; charset = utf-8 接受语言:nl-BE Accept-Encoding:gzip,deflate User-Agent:Mozilla / 5.0(兼容; MSIE 10.0; Windows NT 6.2; Trident / 6.0; MSAppHost / 1.0) 主持人:app1.o.esb.local 内容长度:156 连接:保持活力 Pragma:no-cache
{ “meldingen”:{ “MeldingDto”:[{ “ID”: - 1, “代码”: “”, “MeldingTijd”: “2014-06-20T15:34:52.680 + 02:00”,” Melder “:” ABW_PN”, “Commentaar”: “testμ”, “InterventieId”:381}]}}
这里在fiddler的hexview中,μ符号是C2 B5。
WSO2服务将此视为2个字符而不是1个字符。
当我使用soapUI并发送相同的字符时,发送为,B5,并且正确解释。我希望WSO2能够知道如何处理UTF-8。
我应该编辑我的编码以发送B5而不是C2 B5,还是WSO2 esb需要一个aditional设置,以便它知道如何正确解释UTF8编码?
提前致谢
伊恩
答案 0 :(得分:0)
我的同事和我想出了如何解决这个问题。在客户端,我们按以下方式编码消息:
encodeURIComponent方法(评语);
在μ符号的情况下,我们得到%C2%B5。
然后在服务器端WSO2上我们使用了javascript函数(本地条目):
function decode(mc)
{
var Input = mc.getProperty('InputdecodeURIComponent').toString();
var Output = decodeURIComponent(Input);
mc.setProperty('OutputdecodeURIComponent', Output);
}
<property name="InputdecodeURIComponent" value=”ZET HIER ENCODED VALUE” />
<script language="js" key="HelperFunctions.js" function="decodeXml"/>
<property name="Output" expression="get-property('OutputdecodeURIComponent')"/>
我希望这会有所帮助。
此致
伊恩