Webx是阿里巴巴自主开发的web框架,当前版本为webx3,下文中不区分webx和webx3。
一、Request&Response
为了简化各类编码设置,Webx试图提供统一的配置方式<services:request-contexts
xmlns="http://www.alibaba.com/schema/services/request-contexts">
……
<!-- 编码设置 -->
<set-locale defaultLocale="zh_CN" defaultCharset="GBK" />
<!-- 参数解析功能的增强,同时也用于配合编码设置来实现对get请求参数的正确解码 -->
<parser/>
……
</services:request-contexts>
如上所示,webx采用<set-locale/>来设置字符集,接着采用<parser/>将来get、post参数按照指定的字符集来进行解码。此外,webx还会在response中设置context-type,将字符集设置为<set-locale/>中配置的值。一般情况下,这已经能解决大部分乱码问题了,但偶尔还需要针对特定的请求指定特定的编码。比如:chrome发送的ajax请求参数都是UTF-8,当<set-locale/>设置为GBK时就会出现乱码。此时可以按照如下方式进行解决,需要注意的是,即时是post请求,_input_charset也需要附带在URL中,而不是作为普通的form字段。