Web中文乱码——3、Webx编解码基础
来源:互联网 发布:白银td知乎 编辑:程序博客网 时间:2024/05/18 00:37
Webx是阿里巴巴自主开发的web框架,当前版本为webx3,下文中不区分webx和webx3。
参考:
http://openwebx.org/docs/requestcontexts.html
一、Request&Response
为了简化各类编码设置,Webx试图提供统一的配置方式<services:request-contextsxmlns="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字段。
http://localhost:8081/myapp/myform?_input_charset=UTF-8类似的,某些response可能不是以默认字符集进行输出的,此时就需要如下指定。
http://localhost:8081/myapp/myform?_output_charset=UTF-8此外,webx还提供了如下方式来确保在当前会话中一直只用特殊的字符集
http://localhost:8081/myapp?_lang=zh_CN:UTF-8
二、VM
和SpringMVC类似,webx中可以指定VM的相关编码。<services:templatexmlns="http://www.alibaba.com/schema/services/template/engines"searchExtensions="true"><velocity-engine templateEncoding="gbk"strictReference="false" path="/classpath/templates/${component}"><global-macros><name>macros.vm</name> </global-macros> <plugins><!-- 安全检查 --><vm-plugins:fasttext-support /><!-- 渲染支持,controlTool等pull工具需要用到 --><vm-plugins:renderable-support /></plugins></velocity-engine></services:template>templateEncoding指定了Java以何种编码来读入VM。和SpringMVC不同的是,Webx并没有在这里指定Java向浏览器输出VM采用的编码,输出时采用JVM默认的编码,详见《Java中文乱码——1、Java编解码基础》
三、配置建议
当然还是那句话,将能够配置的地方全都配置成一样的字符集,比如:UTF-8。但即使如此,乱码还是会发生,那就详见《Web中文乱码——4、Webx+jetty乱码》
参考:
http://openwebx.org/docs/requestcontexts.html
0 0
- Web中文乱码——3、Webx编解码基础
- Web中文乱码——1、SpringMVC+Jetty编解码基础
- Java中文乱码——1、Java编解码基础
- Web中文乱码——4、Webx+jetty乱码
- 字符串中文乱码、编解码问题
- 中文编解码问题
- Netty学习(三)—Codec编解码基础
- java web 编解码
- 视频编解码基础
- 数字视频编解码基础
- 编解码基础1
- 编解码基础2
- 视频编解码基础
- 视频编解码基础
- 深入分析JAVA WEB技术内幕笔记——java web编解码
- Web编解码方式集合
- Tomcat web 编解码过程
- zBar解码中文乱码
- RESTful风格
- 第二周作业
- 基于C++ Lambda表达式的程序优化
- GridView用法
- [SF]星信
- Web中文乱码——3、Webx编解码基础
- 修改系统方法生命周期
- 识别程序中的随机性识别错误
- C++11的Lambda使用一例:华容道求解
- windows下python SSH的使用——paramiko模块
- 电脑蓝屏代码大全
- Hadoop进程占CPU 800%
- [HenrySky的实验室]我的多相式睡眠日志
- 判断闰年