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");