mysql插入中文乱码问题

  • 如果使用的 MySQL 是 5.5 版本,那么 Insert 语句插入中文就会报错:ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column。

    这是因为 MySQL 数据库默认配置的编码方式是 latin1,所以会导致无法插入中文字符串。我们只要把它改成 gb2312 或者 utf8 就可以了!笔者建议使用 utf8,它是国际通用字符编码。

    MySQL不能插入中文的解决方法:
    1.找到 MySQL 安装目录下的 my.ini 文件(没有的这个文件 的话是my-default.ini这个文件 复制一份将名称改成my.ini),我是直接下载解压版的:E:\soft\mysql-5.6.24-win32目录下就有my-default.ini这个文件 ,我什么也没有配置它,复制一份后按以下设置
    2.使用开发工具或者记事本打开 my.ini,查找 default-character-set 和 character-set-server
    3.把 default-character-set=latin1 改成 default-character-set=utf8
    4.把 character-set-server=latin1 改成 character-set-server=utf8
    5.保存之后,重启 MySQL 数据库,如果您使用的是 WAMPServer 集成开发工具就重启 WAMPServer 中的所有服务。

    需要注意的是,先前创建的数据库不能再用了,必须重新创建新的数据库才可以插入中文字符。如果不想重新创建数据库的表,可以先把每一个表的结构 SQL 语句取出来,然后把旧的数据库删除,最后创建新的数据库和创建新的表。

    注:MySQL 没有重启的命令,要先停止,然后再启动。开始 -> cmd -> net stop mysql -> net start mysql

以下就是我的my.ini的配置

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
character_set_server=utf8
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....


# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
port=3306
default-character-set=utf8



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:出现中文乱码的原因是因为数据库的编码没有设置为支持中文的编码。MySQL的默认编码是Latin1,不支持中文。应该将数据库编码设置为utf8或utf8mb4来支持中文字符。可以通过查看数据库的编码设置来确认,使用命令"show variables like 'char%'"可以查看当前的字符集设置。\[1\] 引用\[2\]:解决MySQL插入中文乱码问题的方法是修改数据库的默认编码为utf8或utf8mb4。对于MySQL 5.7版本,可以通过修改字符集的默认方式来解决乱码问题。而MySQL 8.0版本默认的字符集已经是utf8,可以直接插入中文数据而不会出现乱码问题。如果忘记修改默认编码,就会出现乱码的问题。\[2\] 引用\[3\]:在MySQL 5.7版本中,在命令行使用MySQL创建表后向表中插入中文数据时可能会出现乱码问题。这是因为MySQL 5.7版本的默认编码是Latin1,不支持中文字符。所以在插入中文数据时会出现错误。而在MySQL 8.0版本之后,默认编码已经改为utf8mb4,避免了乱码问题。\[3\] 所以,要解决MySQL插入中文乱码问题,可以通过修改数据库的默认编码为utf8或utf8mb4来解决。 #### 引用[.reference_title] - *1* [mysql字符编码的设置以及mysql中文乱码的解决方法](https://blog.csdn.net/yipiankongbai/article/details/16937815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [解决MySQL向表中增加数据插入中文乱码问题](https://blog.csdn.net/cyaya6/article/details/125786006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值