mysql中文字符的问题


​mysql5.1上成功更改的例子:     
     1.
my.cnfclentmysqld加入default-character-set=utf8

     2.  更改数据库字符集

     3.创建数据库表字符集

     4.更改兼容中文的gbk

以下是详细过程

 

mysql> usemysql

Database changed

mysql> CREATETABLE pingfen

   ->   (CODE VARCHAR(20),

   -> ZONGHEPINGFEN Decimal(12,3),

   -> DATE_INSERT DATEtime,

   -> NEIRONG LONGTEXT,

   -> JISHU Decimal(12,3),

   -> ZIJIN Decimal(12,3),

   -> XIAOXI Decimal(12,3),

   -> HANGYE Decimal(12,3),

   -> JIBEN Decimal(12,3),

   -> PAIXU_TIPS Decimal(12,3),

   -> DUANQI VARCHAR(100),

   -> ZHONGQI VARCHAR(100),

   -> CHANGQI VARCHAR(100),

   -> CHENGBEN Decimal(12,3),

   -> CHENGBENMIAOSHU VARCHAR(500),

   -> WURIZIJIN VARCHAR(100)

   ->   ) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;

Query OK, 0 rows affected(0.02 sec)

 

mysql> insertinto table pingfen(zonghepingfen,duanqi)values(6,'你好');

   '> ;

   '> ;

   '> /

   '> ;

   '> exit

   '> exit;

   '>by;

   '> Ctrl-C -- exit!

Aborted

[root@master yum.repos.d]#mysql -uroot

Welcome to the MySQLmonitor.  Commands end with ; or \g.

Your MySQL connection id is4

Server version: 5.1.71 Sourcedistribution

 

Copyright (c) 2000, 2013,Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registeredtrademark of Oracle Corporation and/or its

affiliates. Other names may betrademarks of their respective

owners.

 

Type 'help;' or '\h' for help.Type '\c' to clear the current input statement.

 

mysql> usemysql mysql

Database changed

mysql> insertinto  pingfen(zonghepingfen,duanqi)values(6,'你好');

Query OK, 1 row affected, 1warning (0.01 sec)

 

mysql> select *from pingfen;

------ ---------------------------- --------- ------- ------- -------- -------- ------------------- -------- --------- --------- --------------------------- -----------

| CODE | ZONGHEPINGFEN |DATE_INSERT | NEIRONG | JISHU | ZIJIN | XIAOXI | HANGYE | JIBEN |PAIXU_TIPS | DUANQI | ZHONGQI | CHANGQI | CHENGBEN |CHENGBENMIAOSHU | WURIZIJIN |

------ ---------------------------- --------- ------- ------- -------- -------- ------------------- -------- --------- --------- --------------------------- -----------

| NULL|        6.000 |NULL       |NULL    NULL |  NULL|   NULL|   NULL |  NULL|      NULL|       | NULL    |NULL      NULL |NULL           |NULL     |

------ ---------------------------- --------- ------- ------- -------- -------- ------------------- -------- --------- --------- --------------------------- -----------

1 row in set (0.00sec)

 

mysql> setnames utf8;

Query OK, 0 rows affected(0.00 sec)

 

mysql> select *from pingfen;

------ ---------------------------- --------- ------- ------- -------- -------- ------------------- -------- --------- --------- --------------------------- -----------

| CODE | ZONGHEPINGFEN |DATE_INSERT | NEIRONG | JISHU | ZIJIN | XIAOXI | HANGYE | JIBEN |PAIXU_TIPS | DUANQI | ZHONGQI | CHANGQI | CHENGBEN |CHENGBENMIAOSHU | WURIZIJIN |

------ ---------------------------- --------- ------- ------- -------- -------- ------------------- -------- --------- --------- --------------------------- -----------

| NULL|        6.000 |NULL       | NULL    NULL |  NULL|   NULL|   NULL |  NULL|      NULL|       | NULL    |NULL      NULL |NULL           |NULL     |

------ ---------------------------- --------- ------- ------- -------- -------- ------------------- -------- --------- --------- --------------------------- -----------

1 row in set (0.00sec)

 

mysql> selectduanqi from pingfen;

--------

| duanqi |

--------

      |

--------

1 row in set (0.00sec)

 

mysql> insertinto  pingfen(zonghepingfen,duanqi)values(6,'你好111111111111111111');

Query OK, 1 row affected, 1warning (0.01 sec)

 

mysql>commit;

Query OK, 0 rows affected(0.00 sec)

 

mysql> selectduanqi from pingfen;

--------

| duanqi |

--------

      |

      |

--------

2 rows in set (0.00sec)

 

mysql> setnames gbk;

Query OK, 0 rows affected(0.00 sec)

 

mysql> selectduanqi from pingfen;

--------

| duanqi |

--------

      |

      |

--------

2 rows in set (0.00sec)

 

mysql> altertable pingfen character set gbk;   更改兼容中文的gbk

Query OK, 2 rows affected(0.07 sec)

Records: 2 Duplicates: 0  Warnings: 0

 

mysql> selectduanqi from pingfen;

--------

| duanqi |

--------

      |

      |

--------

2 rows in set (0.00sec)

 

mysql> insertinto  pingfen(zonghepingfen,duanqi)values(6,'你好111111111111111111');

Query OK, 1 row affected (0.01sec)

 

mysql> selectduanqi from pingfen;

------------------------

|duanqi                |

------------------------

                      |

                      |

你好111111111111111111    |

------------------------

3 rows in set (0.00sec)

 

mysql>

### MySQL 中文字符乱码解决方案 MySQL 中文字符乱码问题通常由编码设置不一致引起。以下是解决该问题的详细方法: #### 1. 检查当前编码设置 运行以下 SQL 命令以查看当前的编码配置: ```sql SHOW VARIABLES LIKE 'character%'; ``` 此命令将显示多个与字符集相关的变量,包括 `character_set_server`、`character_set_database` 等[^2]。 #### 2. 修改数据库、表和列的编码 如果发现编码不是 UTF-8,则需要修改相关设置。例如,可以使用以下 SQL 语句将数据库编码更改为 UTF-8: ```sql ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 同时,确保表和列的编码也设置为 UTF-8: ```sql ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` #### 3. 配置 MySQL 全局编码 为了使更改永久生效,需修改 MySQL 的配置文件(通常是 `my.cnf` 或 `my.ini`)。在文件中添加或修改以下内容: ```ini [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 ``` 保存文件后,重启 MySQL 服务以应用更改: ```bash sudo systemctl restart mysql ``` #### 4. 检查 JDBC 连接字符串 如果通过 JDBC 连接 MySQL 数据库,确保连接字符串中包含正确的字符集参数。例如: ```java String url = "jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=utf8"; ``` 此外,在创建 `MySqlConnection` 对象时,也可以指定字符集: ```java MySqlConnection mySqlC = new MySqlConnection("user id=root;password=your_password;host=localhost;database=your_database;charset=utf8"); ``` #### 5. 测试插入数据 完成上述更改后,重新运行测试脚本以验证中文字符是否正常存储。例如,执行以下 SQL 语句: ```sql INSERT INTO your_table_name (column_name) VALUES ('测试'); ``` 然后查询插入的数据以确认其显示正确。 #### 注意事项 即使修改了编码设置,仍需注意客户端工具(如 MySQL Workbench)的编码配置。确保所有相关组件均使用 UTF-8 编码[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值