针对javaweb中文乱码的解决方案

HTML 中文乱码问题
1.在head 标签里插入 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

数据库乱码问题
1.数据库插入中文乱码首先需要排除的问题是,MySQL的默认字符集和对应database的字符集是什么。

命令行: SHOW VARIABLES LIKE 'character%'; //查看字符集编码

2.创建数据库的时候 要注意设置编码

     create database mydb character set utf-8;

3.jdbc连接数据库的时候要设置编码

     useUnicode=true&characterEncoding=utf-8;

4.如果数据库不乱码,但是检索数据库元素的时候乱码,可以在sql语句之间加上一句

     String lm = "set names'utf8'";

在select 之前执行,检索出来的数据就不会乱码了。

JavaScript 中乱码问题

     <script src="../../luanma.js" charset="utf-8" type="text/javascript"></script>

2.JS传参之中文乱码解决方案:

传参:用encodeURI(“url参数”)将url编码
收参:用decodeURI(“接收到的值”)解码

var distName = encodeURI(document.getElementById("distName").value);
String distName = request.getParameter("distName");
java.net.URLDecoder.decode(distName,"UTF-8")
distName = java.net.URLDecoder.decode(distName,"UTF-8");
jsp页面URLEncoder.encode(request.getParameter("deptName"),"utf-8");

JSP 乱码问题
1.页面开始的地方加上 <%@ page contentType="text/html; charset=utf-8"%>
2.pageEncoding="utf-8";
3.String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");

Servlet乱码
1.获取jsp参数时

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("utf-8");

2.获取客户端传递过来的用户名参数值

String username = request.getParameter("username");

先对用户名进行解码得到%E7%8E%8B%E6%8C%AF%E5%9B%BD 这样的形式

username = URLEncoder.encode(username, "ISO-8859-1");

再进行utf-8编码 一次得到页面上输入的文本内容

username = URLDecoder.decode(username, "UTF-8");

3.username = new String(username.getBytes("ISO-8859-1"), "UTF-8");

4.设置缓冲区编码 reponse.setCharacterEncoding("UTF-8");
设置浏览器打开文件时编码 response.setHeader("Content-Type","text/html;charset=utf-8");
该方法的简单写法 response.setConteneType("text/html;charset=utf-8");

5…设置服务器的字符串编码

response.setCharacterEncoding("UTF-8");

设置客户端的字符串显示编码。

告诉浏览器输出的内容是html,并且以utf-8的编码来查看这个内容。

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

猜你喜欢

转载自blog.csdn.net/weixin_43815050/article/details/86996935