java web中文乱码解决方案

出现乱码情况 按HTTP请求方式可分为三种

  1. POST,这种乱码其实最容易解决,以spring为例,设置过滤器强制转换字符编码为UTF-8即可。
  2. GET,中文字符在URL串中。

    解决方法一:在后台取参数值的时候转码

    如: String str = new String(param.getString("ISO-8859-1"),"UTF-8");

    此办法确实可行,但在客户端请求字符编码不是ISO-8859-1时,将得不到正确的中文。

    解决方法二:在发布中间件上增加URIEncoding="UTF-8"配置

    此办法的缺点是,当中间件配置环境不可控或者其他应用需要其他编码的情况下,就没辙了。

    解决方法三:客户端如JS 调用encodeURI方法将参数转码再传递。

    个人认为此为最佳方案,可以有效弥补前面两种方法体现的缺点。服务端要增加解码的部分,URLDecoder.decode(str,"UTF-8")。

    PS: JS转码要调用两次encodeURI,而Flex客户端则只需要调用一次。

  3. POST上传文件

    为什么把这个单独拿出来说?因为上传的请求信息包含两部分,一个是request body,也就是发送文件二进制数据的部分。另一个是属性参数,如文件名等,这些参数与GET类似,是与URL一起发送的,所以如果用传统POST方式处理,文件名乱码是解决不了的。那么在此还是要套用GET的解决方法。

时间: 2024-10-10 10:48:37

java web中文乱码解决方案的相关文章

java web中文乱码处理笔记

一.发生中文乱码的情况有以下三种: 1.表单form的两种提交出现中文乱码 ① get提交   ② post提交 2.超链接(本质是get提交)出现中文乱码 3.sendRedirect(发生乱码) 二.乱码产生的原因: 浏览器编码 utf-8 发送请求给服务器是会产生编码不一致的情况所以在发送请求是先定义编码,就能很好的解决编码的问题 三.解决乱码的几种简单方式: post方法提交:解决方案如下: request.setCharacterEncoding(“utf-8”); get方法使用该方

java Web 中文乱码

参考:http://www.cnblogs.com/haimishasha/p/6117968.html  (关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换 - 海米傻傻 - 博客园) 参考:http://www.cnblogs.com/haitao-fan/p/3399018.html(浏览器URL编码 - 尼玛范爷 - 博客园) 参考:http://blog.csdn.net/dbb_zifeng/article/details/53304266

Java web中文乱码

1.设置工程的编码方式 window-preferences-general-workspace 改成uef-8 2.设置html的编码方式 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 该语句告诉浏览器该用什么编码打开文件 3.检查文件的编码方式 有时候修改过文件的编码方式后,在eclipse中打开不会显示乱码,需要用特定的编辑器打开看下文件的当前编码方式(推荐使

PHP函数imagefttext( )因--enable-gd-jis-conv引发中文乱码解决方案

阐述 最近几天与公司的PHP开发人员测试即将上线的WEB站点(致难忘的青春岁月:http://hd.gfan.com),在内网测试环境没有任何问题,但在线上测试时,发现通过PHP的GD函数 imagefttext()引用FreeType字体将文本信息写入图像时,出现中文乱码:对此问题,我们在整个排查过程中,总结了三个能引起中文乱码的原因,如下: 1.Linux系统字符集是否支持中文? [email protected]:~#locale LANG=en_US.UTF-8 LANGUAGE=en_

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器进行设置之类的,结果没有一个有效果,暑假学习了用Dos来开发Java程序,输入cmd命令中dir(directory)进行查询操作时,显示了一堆中文乱码,原本是想重装系统的,因为电脑里面重要东西有点多,所以自己花了一段时间捣鼓了一下电脑,终于解决了如上两个问题,现在心里很开心,附上如下两幅图: cm

aspx页面,中文乱码解决方案

由于文件编码方式编码方式不统一出现样式中文乱码解决方案: 今天碰到的问题:页面字体样式设置的'微软雅黑',可页面没引用.我调试看到样式出现中文乱码了 这种问题,就需要转换文件的编码方式,如下两步即可解决 第一步:在visual studio 2010中,“文件”菜单“Default.aspx另存为”命令,出现“另存文件为”对话框,点击“保存”按钮右边的小三角,“编码保存”命令,然后选择gb2312 第二步:在web.config里设置<globalization requestEncoding=

jquery之ajax中文乱码解决方案

$.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: '商品'},success : function(data){ } } ); 问题: 提交后后台action程序时,取到的type是乱码 解决方法: 方法一:提交前采用encodeURI两次编码,记住一定是两次 1.修改以下代码 data:{id:1, type:encodeURI(encodeUR

JS传值中文乱码解决方案

JS传值中文乱码解决方案 一.相关知识 1,Java相关类: (1)java.net.URLDecoder类 HTML格式解码的实用工具类,有一个静态方法:public static  String  decode(String   变量名,String   编码格式):给变量指定解码. (2)java.net.URLEncoder类 HTML格式编码的实用工具类,有一个静态方法:public static  String  encode(String   变量名,String   编码格式):

客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案

最近在制作一个安装包,需要安装的时候执行mysql脚本儿,做了一个批处理,但是发现总是执行到 插入中文的时候报错,或者插入中文是乱码. 网上查了好多资料,说是把编码改成GBK什么的,终究还是不成功. 最后经过多次测试,现把解决方案分享给大家. 第一步:打开mysql中的配置文件,my.ini,看一看配置文件中 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 看是不是这样配置的.因为utf8 是国际通用的,