终于解决了jsp和mysql乱码问题~

被jsp和mysql乱码困扰了几天,终于解决了这个头痛的问题。现在将一些心得写下来,供大家参考,疏漏之处还请指正。

 

有些问题还没有弄清楚,本文还待以后补充,以下所述只是确保你的jsp页面和数据库不会出现中文乱码。

 

首先要提到四个字符集(charset):gbk;gb2312;utf-8;ISO-8859-1.

 

ISO-8859-1是默认的编码方式。

 

想要正确显示中文,那么中文字符串的编码必须是utf-8(到底是为什么还是不知道~);

 

1.所以在页面接受中文字符串参数的时候,必须有这样一条转换语句:

String des=new String(request.getParameter("textarea").getBytes("ISO-8859-1"),"utf-8");

 

 

2.jsp的头部必须这样写:

<%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="utf-8" charset="utf-8"%>

重点就是pageEncoding="utf-8";

 

3.数据库(db),表(table)是何种编码方式都无所谓,不会出现乱码,但是会出现"Data too long"的错误。干脆将二者的编码全部设为utf-8;

 

4.连接数据库的时候,"?useUnicode=true&characterEncoding=UTF-8" "可不加,没有影响。

con=DriverManager.getConnection("jdbc:mysql://localhost:3306/select_test","root","900216");

 

5.utf-8和utf8两种写法没有差别,也不会出现乱码,但是统一写法比较好,养成良好的编程风格。所以以后就用utf-8;

 

6.gbk可以显示繁体和简体中文,gb2312只能显示简体。所以二者的乱码形式也有差别。gbk的乱码会出现很多繁体汉字,gb2312会出现很多"????".

 

  

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值