Servlet及数据库乱码问题(java)

来源:互联网 发布:mac能播p2p电影浏览器 编辑:程序博客网 时间:2024/06/06 00:15

1. Servlet部分乱码问题

 servlet输出中文
1)为什么会有乱码?
out.println方法在默认情况下,会使用"iso-8859-1"来编码。
2)解决方式
response.setContentType("text/html;charset=utf-8");
注:
作用1:out.println方法会使用指定的字符集(比如"utf-8")来编码。
作用2:设置content-type消息头的值,告诉浏览器,服务器返回的数据类型。

2. 表单传递数据乱码问题

 如果表单包含有中文参数值,如何处理?
1)为什么会有乱码?
表单提交时,浏览器会对中文参数值进行编码。
注:
浏览器打开该表单所在的页面时使用的字符集来编码。
服务器端默认情况下,会使用"iso-8859-1"来解码。
2)解决方式
step1:保证浏览器按照指定的字符集来编码。
比如,对于一个静态页面(html),添加
<meta http-equiv="content-type" 
content="text/html;charset=utf-8">
step2:服务器端,按照对应的字符集来解码。
request.setCharacterEncoding("utf-8");
注:
a. 该方法必须要添加到所有的
request.getParameter方法的前面。
b. 只针对post请求有效。
c. 如果是get请求,可以采取如下的方式来处理:
name = new String(
name.getBytes("iso-8859-1"),"utf-8");
这行代码的作用:先获得浏览器发送过来的原始的字节数组,然后使用指定的字符集解码。

3. 数据库乱码问题(mysql)

  Mysql中的乱码问题
mysql的部分驱动在默认情况下,会使用“iso-8859-1”来编码和解码
解决方式:
jdbc:mysql://localhost:3306/jsd1607db
?useUnicode=true&CharacterEncoding=utf8