1.ajax--URL中的参数含中文,后台接受的参数出现乱码

解决方法:

第一步:在javascript中,对url进行两次编码

url = "http://localhost:8080/MyData/SearchTopicServlet?topic="+topic;
url=encodeURI(url);
url=encodeURI(url);//记得一定是编码两次

第二步:在servlet中,对获取的参数进行解码

String topic=request.getParameter("topic");
topic = java.net.URLDecoder.decode(topic, "UTF-8");

2.servlet返回给ajax的中文乱码

解决方法:

在servlet中添加下面这一句话:

response.setContentType("text/xml;charset=utf-8");

3.TXT文件中含中文,读入以后,中文出现乱码

解决方法:

br=new BufferedReader(new InputStreamReader(new FileInputStream("E:\\encodeBook.txt"),"UTF-8"));

Java中文件读入,读取的编码原理:

Reader 类是 Java 的 I/O 中读字符的父类,而 InputStream 类是读字节的父类,InputStreamReader 类就是关联字节到字符的桥梁,它负责在 I/O 过程中处理读取字节到字符的转换,而具体字节到字符的解码实现它由 StreamDecoder 去实现,在 StreamDecoder 解码过程中必须由用户指定 Charset 编码格式。值得注意的是如果你没有指定 Charset,将使用本地环境中的默认字符集,例如在中文环境中将使用 GBK 编码.

Java的I/O类处理图

4.URL中的编码问题:

解决方法:

 import java.net.URLDecoder;

 import java.net.URLEncoder;

 public class URLDecoderTest {

     public static void main(String[] args) throws Exception {

        //将application/x-www-form-urlencoded字符串

        //转换成普通字符串

        //必须强调的是编码方式必须正确,如baidu的是gb2312,而google的是UTF-8

        String keyWord = URLDecoder.decode("%E6%96%87%E6%A1%A3", "gb2312");

        System.out.println(keyWord);

        //将普通字符串转换成

        //application/x-www-form-urlencoded字符串

        //必须强调的是编码方式必须正确,如baidu的是gb2312,而google的是UTF-8

        String urlStr = URLEncoder.encode("文档", "gb2312");

        System.out.println(urlStr);

     }

 }

原理:

1.application/x-www-form-urlencoded是一种编码类型。

  这种类型会:

  1.字符"a"-"z","A"-"Z","0"-"9",".","-","*",和"_" 都不会被编码;
  2.将空格转换为加号 (+) ;
  3.将非文本内容转换成"%xy"的形式,xy是两位16进制的数值;
  4.在每个 name=value 对之间放置 & 符号。
  

2。网页中的表单使用POST方法提交时,数据内容的类型是 application/x-www-form-urlencoded,我们经常会在浏览器的地址栏里看到这样的字串%E6%96%87%E6%A1%A3,这就是被编码后的字符串。

3.UrlEncoder是将普通字符串转换成application/x-www-form-urlencoded字符串。

5.servlet中的乱码问题:

  1.若接受到的字段为乱码:

  缺少了这一句话:request.setCharacterEncoding("utf-8");

  2.跳转后的页面出现乱码:

  缺少了这一句话:response.setContentType("text/html");

  并且session之前不可以有out 输出

6。JS动态给html页面赋值,出现乱码

  js文件中出现这种给html页面动态添加内容时,添加内容若是中文,注意在jsp页面中设置编码,否则会出现乱码。

  js中为:$('userpwd_error').innerHTML = "<img src='images/wrong.gif'>密码不能为空";

修改方法:

在jsp中如下设置:

     1. <html>
     2. <head>
     3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     4. <script type="text/javascript" src="text.js" charset="GB2312"></script>
     5. </head>
     6. <body>
     7.
     8. </body>
     9. </html>

其实就是第二行charset惹的祸,第二行主要是设定了整个页面的字符编码方式,在此例中是UTF-8。
而在JS中是普通的GB2312或者是GBK编码方式。所以会产生乱码。注意第三行最后的charset=”GB2312″。

7.超链接传参,参数是中文时,后台接收的参数是乱码

在jsp中:

<% while(rs.next()){%>
<tr>
<td><%=rs.getInt(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
<td>
<a href="./user.jsp?id=<%=rs.getString(1)%>&username=<%=rs.getString(2)%>&password=<%=rs.getString(3)%>&authority=<%=rs.getString(4)%>"><i class="icon-pencil"></i></a>
<a href="./../AdminDelUserServlet?id=<%=rs.getInt(1)%>"
onclick="return confirm('确定删除该用户吗?')"><i class="icon-remove" ></i></a>
</td>
</tr>
<%} %>

  后台接收时如下设置,中文则不会出现乱码:

String id=request.getParameter("id");
String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
String password=request.getParameter("password");
String authority=request.getParameter("authority");

Java中常见的几个乱码问题以及解决方法的更多相关文章

  1. java中可以出现的中文乱码的集中解决

    从学习javaweb开始就会经常遇到中文乱码,今天就做以下记录: 1. 要避免项目中遇到乱码,首先就是在搭建项目的设置工作空间的字符编码,若是多人开发,就更应该做到统一,在eclipse中选择widn ...

  2. java中double和float精度丢失问题及解决方法

    在讨论两位double数0.2和0.3相加时,毫无疑问他们相加的结果是0.5.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void te ...

  3. JAVA 中URL链接中文参数乱码的若干处理方法

    方法一: http://xxx.do?ptname='我是中国人' String strPtname = request.getParameter("ptname"); strPt ...

  4. [ JAVA编程 ] double类型计算精度丢失问题及解决方法

    前言 如果你在测试金融相关产品,请务必覆盖交易金额为小数的场景.特别是使用Java语言的初级开发. Java基本实例 先来看Java中double类型数值加.减.乘.除计算式实例: public cl ...

  5. Java中常见的5种WEB服务器介绍

    这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的 ...

  6. Java中常见的Exception种类

    Java中常见的Exception种类 1.ClassNotFoundException 2.IOException 3.NoSuchFieldException 4.NoSuchMethodExce ...

  7. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  8. Java中常见的注解

    Java中常见的注解 1.JDK自带的注解@Override  @Deprecated  @Suppvisewarnings 常见第三方注解 Spring:@Autowired  @Service  ...

  9. Java中常见的异常类型

    一. Java中常见的异常类 异常类 说明 ClassCastException 类型准换异常 ClassNotFoundException 未找到相应类异常 ArithmeticException ...

随机推荐

  1. android中实现毛笔效果(View 中画图)

    近期有一个项目设计一个APP实现通过触摸屏实现毛笔写字效果.传统的绘画板程序直接通过Path的moveTo和LineTo便可实现简单的线条绘画程序.然而要达到毛笔的笔锋效果则须要更为具体点的设计.我的 ...

  2. NSNotificationCenter详解

    本文转载至 http://blog.csdn.net/chengyingzhilian/article/details/7874408 作用:NSNotificationCenter是专门供程序中不同 ...

  3. windows10系统自带输入法不能切换中文如何解决

    具体如下: 1.打开计算机管理软件,右击“开始”按钮,在弹出的菜单中选择“计算机管理”: 2.或在桌面右击“此电脑”图标,在弹出的菜单中选择“管理”: 3.在打开的计算机管理软件中,选择“系统工具”- ...

  4. maven-tomcat7;IOC;AOP;数据库远程连接

    [说明]真的是好烦下载插件啊,maven-tomcat7 插件试了好多次都不行,下载不成:部署不成:好不容易从github中得到的springmvc项目也是运行不起来,中间又是查了许多东西,绕着绕着都 ...

  5. [置顶] 2013_CSUST暑假训练总结

    2013-7-19 shu 新生训练赛:母函数[转换成了背包做的] shuacm 题目:http://acm.hdu.edu.cn/diy/contest_show.php?cid=20083总结:h ...

  6. [Android]彻底去除Google AdMob广告

    应用中包含广告是能够理解的,但经常造成用户误点,或者广告切换时造成下载流量,就有点让人不舒服了. 以下就以Google AdMob广告为例,看怎样彻底去除他. 先分析一下Google AdMob的工作 ...

  7. Gradle-jar-aar

    Ref:Android Studio系列教程 Ref:Android Studio系列教程四--Gradle基础 Ref:Intellij IDEA 14.x 中的Facets和Artifacts的区 ...

  8. python 的for else语句

    for中间不是break出来的,是正常循环完跳出循环的会执行else内的语句 while else语句也是如此 这个以前的常见语言没有,特此记录

  9. Linux下自动清除MySQL日志文件

    MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days= ...

  10. [原创]java WEB学习笔记21:MVC案例完整实践(part 2)---DAO层设计

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...