日期:2014-05-18  浏览次数:20811 次

中文字符问题
用java开发一个简单的web应用,从jsp到eclipse工程,再到mysql数据库都设置的为utf-8字符,也都运行正常。现问题是java代码中设定的中文字符,比如“中国”,被传到jsp显示时 "中国 "前面加了几个乱码框框,网上查了下是由于utf-8字符会补位,请问这种问题怎么解决?怎么去掉中文字符前多加的乱码?谢谢!!!

------解决方案--------------------
写一个方法转换一下就可以了
public String toChina(String str)
{
String strtemp = str;
byte []temp = str.getBytes( "iso-8859-1 ");
strtemp = new String(temp);
return strtemp;

}.
用这种格式取用户输入的内容:
类名.toChina(request.getParameter( "xxx "));
加上异常处理就行了,这样取到的字符应该就不是乱码了
------解决方案--------------------
1.进入到mysql安装目录修改my.ini
[client]
port=3306
default-character-set=gbk

[mysql]
default-character-set=gbk

2.在mysql中建表时需要添加默认字符集语句
例如:
create table person(
id char(32),
password char(20) not null,
name char(20)not null,
email char(32),
primary key (id)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

3.在你的JSP页面里要加上
<%@page contentType= "text/html; charset=gbk " %> //charset=gbk

<%
request.setCharacterEncoding( "gbk ");
%>

4.在建立数据库连接时要加上如下语句
例如:
Class.forName( "org.gjt.mm.mysql.Driver ");
con = DriverManager.getConnectionjdbc:mysql://localhost/regAndLogin?useUnicode " +
"=true&characterEncoding=gbk ";//重点在这里
------解决方案--------------------
create table person(
id char(32),
password char(20) not null,
name char(20)not null,
email char(32),
primary key (id)
)ENGINE=MyISAM DEFAULT CHARSET=gbk;
------解决方案--------------------
添加一个方法:
public String getChinese(String str){
if(str != " "){
try{
str = new String(str.getBytes( "iso-8859-1 "), "gb2312 ");
}catch(Exception ex){}
}else{
str = " ";
}
return str;
}
------解决方案--------------------
听高手讲
解决jsp页面传值的乱码除了setCharacterEcoding();
也就是下面这种了,
String country = new String(country.getBytes( "ISO8859-1 "), UTF-8);
手动转码是绝对不会出错最保险滴