中文字符转码并存取mysql

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:27:17
我要做的是:
将一段中文字符串放进mysql,然后读取出来。
我遇到的问题是:
1.配置好了字符过滤器;页面A中,有一个属性(name=myname),值为“杰”(value="杰"),向页面B传递时,页面B能正常接收,说明字符过滤器配置正确。有一个.class,是Action的实现类,奇怪的是——该文件接收myname属性时,居然会乱码!!也就是说,并没有正常接收到“杰”的属性值,为什么呢??怎么解决这个问题??
2.我用一个类,执行以下代码:
String myname="杰";
String mynamemagb=URLEncoder.encode(myname,"gb2312");
System.out.println(mynamemagb);
得到了“杰”的gb2312码,然后将该码放进MySql数据库中,然后,执行代码将其取出,然后执行代码:
String mngname=URLDecoder.decode(mngnamema,"gb2312");
此时,为什么mngname变成了“???”呢??而不是“杰”??
****真的非常希望解决中文字符在MySql中的存取问题,希望有哪位大侠可以帮个忙,搞掂的话追加50!!*****
我不希望更改MySQL的编码设置。
第二个问题我已经通过其他方式解决了。但第一个问题依然存在。
11月19日16:11声明:由于本人已解决了第二个问题,所以,若第一个问题得到了解决,将不追加50分。

String mngname=new String(mngnamelinshi.getBytes("iso-8859-1"),"gb2312");
out.println(mngname);

将页面的编码,mysql数据库的编码,过滤器的编码均设置成 gb2312再试试

页面传过来的一般为ISO-8859-1格式编码,
中文需对照着解码:
String myname= request.getParameter("myname");
String mynamemagb=new String(myname.getBytes("ISO-8859-1"),"UTF-8");
(这样mynamemagb存的就是"UTF-8",想存成其他编码,将其替换就行)。
页面传过来的也可能是其他编码,这时候只要"ISO-8859-1"换成对应的编码就行了。
以下是Java中常见的编码格式:
US-ASCII 7 位 ASCII 字符,也叫作 ISO646-US、Unicode 字符集的基本拉丁块
ISO-8859-1 ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1
UTF-8 8 位 UCS 转换格式
UTF-16BE 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序
UTF-16LE 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序
UTF-16 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识