String username="中文设置"; username= new String(username.getBytes("GBK"), "ISO8859_1"); String sql="insert into basic (Uname) values('"+username+"');
现在的问题就是直接在mysql中insert into basic (Uname) values(“哈哈”);都是乱码。这个该怎么办啊? 不是传字符串的问题的哦
你的mysql安装是否有问题,我安装完后直接sql端插入中文显示都正常的.
呵呵,这个问题有这么麻烦吗?清空原来basic表中的数据,你在mysql命令行下面一步一步的执行:SET character_set_client = gbk; SET character_set_connection = gbk; SET character_set_database = gbk; SET character_set_results = gbk; SET character_set_server = gbk;SET collation_connection = gbk_bin; SET collation_database = gbk_bin; SET collation_server = gbk_bin;DELETE FROM basic; ALTER TABLE basic CONVERT TO CHARACTER SET gbk;insert into basic(Uname)values("哈哈"); SELECT * FROM basic;
mysql> ALTER TABLE basic CONVERT TO CHARACTER SET gbk; ERROR 1064 (42000): You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONV ERT TO CHARACTER SET gbk' at line 1 mysql> 请问该如何设置啊?
ULL | |
| 21 | ??? | 0 | M | 0000-00-00 | | 0000-00-00
| | | NULL | | 0000-00-00 | 0 |
ULL | |
| 22 | ??? | 0 | M | 0000-00-00 | | 0000-00-00
| | | NULL | | 0000-00-00 | 0 |
ULL | |
| 23 | ??? | 0 | M | 0000-00-00 | | 0000-00-00
| | | NULL | | 0000-00-00 | 0 |
ULL | |
| 24 | ??? | 0 | M | 0000-00-00 | | 0000-00-00
| | | NULL | | 0000-00-00 | 0 |
ULL | |
| 25 | ??? | 0 | M | 0000-00-00 | | 0000-00-00
| | | NULL | | 0000-00-00 | 0 |
character_set_server = gbk再看下结果。
| 27 | ??? | 0 | M | 0000-00-00 | | 0000-00-00 | S |
| | | NULL | | 0000-00-00 | 0 | 0 | N
ULL | |还是乱码。
jdbc连接要设置为什么啊?
String user = "root";
String password = "aaa";
Connection connRemoteMysql = DriverManager.getConnection(url, user, password);
mysql>show variables like "%char%";mysql>show variables like "%colla%";能看到你的mysql字符集设置,如果有不是gbk,可以用下面的命令改变它:
mysql>SET character_set_client = gbk
mysql>SET character_set_connection = gbk
mysql>SET character_set_database = gbk
mysql>SET character_set_results = gbk
mysql>SET character_set_server = gbkmysql>SET collation_connection = gbk_bin
mysql>SET collation_database = gbk_bin
mysql>SET collation_server = gbk_bin另外,对你原来有中文的表执行下面语句:
ALTER TABLE 表名 CONVERT TO CHARACTER SET gbk;
| | | NULL | | 0000-00-00 | 0 | 0 | N
ULL | |还是乱码。
mysql> show variables like "%colla%";
+----------------------+----------------+
| Variable_name | Value |
+----------------------+----------------+
| collation_connection | gbk_chinese_ci |
| collation_database | gbk_chinese_ci |
| collation_server | gbk_chinese_ci |
+----------------------+----------------+mysql> show variables like "%char%";
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_server | gbk |
| character_set_system | utf8 |
| character_set_database | gbk |
| character_set_client | gbk |
| character_set_connection | gbk |
| character-sets-dir | F:\program\mysql\share\charsets/ |
| character_set_results | gbk |
+--------------------------+----------------------------------+
7 rows in set (0.00 sec)
那么就好解决了.
MySQL可以正常显示gbk字符集,那么,你存入数据库的时候就要把数据转换为gbk类型
在做WEB时,不需要关心在数据库中存储的是否乱码,只要能够保证数据库和页面显示采用的是相同的编码方式就不会出现问题.
private Connection initialConnection() throws SQLException
{
try
{
this.poolSize++;
Class.forName("com.mysql.jdbc.Driver").newInstance();
String strUrl ="jdbc:mysql://" + ip + ":3306/God?useUnicode=true&characterEncoding=gbk";
Connection myConnection=DriverManager.getConnection(strUrl,strUser,strPassword);
return myConnection;
}
catch( Exception e )
{
throw new SQLException("数据库连接初始化失败 -> " + e.getMessage());
}
}。
。。 public static void main(String[] args){
try{
ConnectionPool pool = new ConnectionPool();
Connection con = pool.getConnection();
//String rootPath=request.getRealPath("/");
//HttpSession session = request.getSession();
char sp=java.io.File.separatorChar;
String username="中文设置";
String sql="insert into basic (Uname) values('"+username+"');";
System.out.println(sql);
PreparedStatement stm = con.prepareStatement(sql);
stm.execute();
stm.close();
//System.out.println(username);
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}k就出现上述结果了,大家都是怎么解决的呢?
username= new String(username.getBytes("GBK"), "ISO8859_1");
String sql="insert into basic (Uname) values('"+username+"');
不是传字符串的问题的哦
SET character_set_connection = gbk;
SET character_set_database = gbk;
SET character_set_results = gbk;
SET character_set_server = gbk;SET collation_connection = gbk_bin;
SET collation_database = gbk_bin;
SET collation_server = gbk_bin;DELETE FROM basic;
ALTER TABLE basic CONVERT TO CHARACTER SET gbk;insert into basic(Uname)values("哈哈");
SELECT * FROM basic;
ERROR 1064 (42000): You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use near 'CONV
ERT TO CHARACTER SET gbk' at line 1
mysql>
请问该如何设置啊?