javascript utf-8编码的文本被解释为unicode

时间:2014-06-20 13:23:06

标签: javascript encoding utf-8 wso2

我将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编码?

提前致谢

伊恩

1 个答案:

答案 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')"/>

我希望这会有所帮助。

此致

伊恩