Web开发笔记 #05# MySQL中文无法匹配

2018-06-02

在 Class.forName 的时候记得先尝试 import 一下。

 

2018-06-04

1、JDBC SELECT 查询,中文条件查不出东西,可能是字符编码问题:

            String sql = "select reply from reply where words = ?";
            preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setString(1, words);
            resultSet = preparedStatement.executeQuery();

检查  conn = DriverManager.getConnection("jdbc:mysql://123.123.82.66:3306/chat", "123", "123");

按如下修改 conn = DriverManager.getConnection("jdbc:mysql://123.123.82.66:3306/chat?characterEncoding=utf8", "123", "123");

2、存储过程插入中文数据乱码??!!方案来自:https://blog.csdn.net/qq_20948497/article/details/78535941

DROP PROCEDURE IF EXISTS insert_mapping;
DELIMITER //
CREATE PROCEDURE insert_mapping(
  IN words_in VARCHAR (100) character set utf8,
  IN reply_in VARCHAR (300) character set utf8
)
BEGIN
--     先通过查 id 判断是否已经存在 words ,存在,直接插入 reply,不存在插入 words 和 reply
    DECLARE wid BIGINT DEFAULT 0;
    SELECT words_id FROM words WHERE words_in=words INTO wid;

    IF wid = 0 THEN
      INSERT INTO words(words) VALUES (words_in);
      SELECT words_id FROM words WHERE words_in=words INTO wid;
      INSERT INTO reply2(reply, words_id) VALUES (reply_in, wid);
    ELSE
      INSERT INTO reply2(reply, words_id) VALUES (reply_in, wid);
    END IF;
END //
DELIMITER ;
--  插入一些 数据
CALL insert_mapping('你好', '你好呢。');
CALL insert_mapping('你好', 'hi.');

3、命令行下插不了中文,JDBC却可以。

set name gbk; 即可。 

 

2018-06-05

1、依然是连接 MySQL 中文没法匹配的问题,发现像下面那样修改一下就可以了:

mysql> SET character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)

不过这种修改是临时性的,要永久性更改需要修改 mysql 的配置文件,但是我没有找到那个配置文件,于是修改了 my.cnf 结果是 mysql 启动不了了 。。。

 

posted @ 2018-06-02 16:10  xkfx  阅读(360)  评论(0编辑  收藏  举报