myeclipse+Navicat for MySQL
从网页插入数据后,插入的数据是乱码。
勾掉“使用MySQL字符集”选用20936后插入的数据变成中文,
但是原本的数据全变成乱码了。
网上的方法试了好多都没用。
来个大佬帮帮忙吧,新手上路快疯了。。。。。。
应该不会,或者说您的sql文件编码和数据库编码格式不符
字符集 utf8
排序规则 utf8_general_ci
CREATE DATABASE `` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
20936 是? 你能来张图么
跟踪一下你的代码, 从页面请求到后端处理, 看看你的数据在哪儿乱码了,
或许是在插入数据库之前就乱了. 可以在乱的地方进行一下转码, 转为utf-8 再存MySQL,
不会有问题
---------11-17新更
下面可以处理你的数据乱码问题, 在你后台获取到数据后进行编码转换,将其转换为UTF-8,再进行数据处理,这时存数据库就是不乱码的。
建议你跟踪调试一下数据在哪里乱码了,你这既然中间变成GB2312了,还是存在一处默认编码没有修改为UTF-8.
import java.io.UnsupportedEncodingException;
/**
* (1)转换字符串的编码
*/
public class ChangeCharset {
public static final String GB2312 = "GB2312";//GB2312
public static final String UTF_8 = "UTF-8";
/**
* 字符串编码转换的实现方法
* @param str 待转换编码的字符串
* @param oldCharset 原编码
* @param newCharset 目标编码
*/
public static String changeCharset(String str, String oldCharset, String newCharset)
throws UnsupportedEncodingException {
if (str != null) {
byte[] bs = str.getBytes(oldCharset);//用旧的字符编码解码字符串。解码可能会出现异常。
return new String(bs, newCharset);//用新的字符编码生成字符串
}
return null;
}
public static void main(String[] args) throws UnsupportedEncodingException {
...// 获取到数据,进行编码处理
String str = "This is a 中文的 String!";
//转换为UTF-8 ,再交互数据库
str = ChangeCharset.changeCharset(str,ChangeCharset.GB2312, ChangeCharset.UTF_8);
...//交互数据库
}
}
1、先检查mysql字符集是不是UTF-8的。
2、可以在程序中增加过滤器3
3、在链接字符串后加上 useUnicode=true&characterEncoding=UTF-8
首先将myeclipse里需要设置编码的地方全部设置成utf-8包括jsp的,然后就是debug后台查看数据是否是乱码,然后就是去MySQL,看看你插入的字段的字符集是什么,是不是utf-8等,还有就是如同**sophialex**说的在链接字符串后加上 useUnicode=true&characterEncoding=UTF-8。