java开发中中文乱码总结
1.jsp页面内容显示乱码
这种乱码原因很简单,一般的工具或解码程序对中文字符解析时采用默认的解码方式:
<%@ page contentType="text/html; charset=ISO-8859-1"%>
我们只需修改其编码方式即可,如下:
<%@ page contentType="text/html; charset=UTF-8"%>
字符集:UTF-8 > GBK > GB2312
2.jsp 与 Servlet 间跳转出现中文乱码
2.1: method="Post"
jsp 中form 表单的 ation="XxxServlet",method="Post"时,提交表单后往往发现中文的属性值在 Servlet 中获取后变乱码。
此时需要定位到 doPost() 方法,首先在方法内首行加上如下 code:
request.setCharacterEncoding("UTF-8");
意思是设置 request 的编码为 "UTF-8",一般与 jsp 页面一致
然后,再添加 code:
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
意思是设置 response 的编码为 "UTF-8",即 Servlet 回传 jsp 时的编码,上面两段用其一即可,保持一致是关键。
2.2:method="Get"
jsp 中form 表单的 ation="XxxServlet",method="Get"时,提交表单后往往发现中文的属性值在 Servlet 中获取后变乱码。
此时需定位的 tomcat 的安装目录 %TOMCAT%/conf/server.xml 文件
寻找如下代码片段:
1. <Connector port="8080" protocol="HTTP/1.1"
2. maxThreads="150"
3. connectionTimeout="20000"
4. redirectPort="8443"
5. URIEncoding="UTF-8"/>
手动加上URIEncoding="UTF-8"
3. javascript url 传递参数中文乱码问题
方案一
html页面:
function testOne() {
var url = "testTwo.action?expr="+你好;
window.location.href = encodeURI(url);
}
后台java代码:
String expr = new String(
request.getParameter("expr").getBytes("ISO-8859-1"),"UTF-8");
方案二
html页面:
function testTwo() {
var url = "testTwo.action?expr="+你好;
window.location.href= encodeURI(encodeURI(url));
}
后台java代码:
String expr = java.net.URLDecoder.decode(lrequest.getParameter("expr") , "UTF-8");
如果用的是weblogic服务器的话,用方案二是可以解决的(我的weblogic的版本是weblogic 9.2的),方案一解决不了。
如果是tomcat服务器的话,这两个方案都可以;也可以在传递参数不处理,后台用
String expr = new String(request.getParameter("expr").getBytes("ISO-8859-1"),"UTF-8");
也是可以的。
4. Java web下载文件文件名乱码
第一种: 设置
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
这里将文件名编码成UTF-8的格式,就不会出现URL出错了。IE6下注意中文文字不能超过超过17个。
第二种:设置
response.setHeader( "Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) );
将中文名编码为ISO8859-1的方式。不过该编码只支持简体中文.
按照上诉方式,可以综合一下两种方式解决绝大部分中文问题。
fileName = URLEncoder.encode(fileNameSrc,"UTF-8");
if(fileName.length()>150)//解决IE 6.0 bug {
fileName=new String(fileNameSrc.getBytes("GBK"),"ISO-8859-1");
response.setHeader( "Content-Disposition", "attachment;filename=" + fileName);
}
java开发中中文乱码总结的更多相关文章
- Java编程中中文乱码问题的研究及解决方案
0 引言 Java最大的特性是与平台的无关性及开发环境的多样性.字符串被Java应用程序转化之前,是根据操作系统默认的编码方式编码.Java语言内部采用Unicode编码,它是定长双字节编码,即任何符 ...
- 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。
这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...
- Java开发中常见的危险信号(中)
本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...
- Java开发中常见的危险信号(上)
本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- Java开发中代码规范有哪些?
Java开发中所要遵守的编码规范大体上有如下7点.命名规范.注释规范.缩进排版规范.文件名规范.声明规范.语句规范以及编程规范. 1.命名规范 (1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z) ...
- java: jsp:param中文乱码
java: jsp:param中文乱码 假如a.jsp/b.jsp文件中 a.jsp代码: 需要加入:request.setCharacterEncoding("UTF-8") ...
- 轻松理解 Java开发中的依赖注入(DI)和控制反转(IOC)
前言 关于这个话题, 网上有很多文章,这里, 我希望通过最简单的话语与大家分享. 依赖注入和控制反转两个概念让很多初学这迷惑, 觉得玄之又玄,高深莫测. 这里想先说明两点: 依赖注入和控制反转不是高级 ...
- mysql中中文乱码问题
作用:约束用来保证数据有效性和完整性 . 定义主键约束 主键约束 primary key : 信息记录某个字段可以唯一区分其他信息记录,这个字段就可以是主键 (唯一 非空) primary key ...
随机推荐
- jvisualVM 分析heapdump
代码很简单,eclipse里面设置下最大堆空间为128m,: @Test public void testOutOfMemory() { List<NewsAddDto> document ...
- Pycharm Professional Edition 激活码(license)
http://blog.csdn.net/yangysc/article/details/52355865 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiw ...
- js中网页高度与宽度那些事
网页可见区域宽:document.body.clientWidth; 网页可见区域高:document.body.clientHeight; 网页可见区域宽:document.body.offsetW ...
- 记一次【求n以内的素数个数】的优化记录
最近在leetCode上刷提,还是满锻炼人的,为以后面试打基础吧.不多说下面开始. 问题:求[2,n]之间的素数的个数. 来源:leetCode OJ 提示: Let's start with a i ...
- LINUX端口查看
e切依燃 LINUX端口查看 查看文件数 ls | wc -w lsof -i:80
- ubuntu下的时间设定(硬件时间,系统时间,本地时间)
问题的来由是在这里: 在cron里设定任务是在凌晨6点执行,检查日志时发现时间总是不对,是在22点左右的时间执行的.研究发现,任务是在本地时间的6点执行了,但不知为什么syslog中的时间都是为utc ...
- JMeter学习-034-JMeter调试工具之一---HTTP Mirror Server
通常,编程工具IDE都提供了相应的调试模块,供开发者使用,以便更快速的定位问题所在.那么在JMeter编写测试脚本的过程中,JMeter都提供了哪些调试工具供我们使用呢? JMeter常用的调试工具有 ...
- OC ---- 字符串 数组 iOS学习-----细碎知识点总结
NSString *urlString = [NSString stringWithFormat:@"http://www.apple.com"]; // 获取字符串 ...
- sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO
sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO 今天在弄一个 sqlalchemy 的数据库基类的时候,遇到了跟多继承相关的一个小问题,因此顺便看了一 ...
- python脚本生成exe可执行文件
1.先安装第三方插件: py2exe. Get py2exe from http://www.py2exe.org/ 在download里下载与自己python对应的版本 2.写一个测试python文 ...