美文网首页
中文没办法插入mysql中。

中文没办法插入mysql中。

作者: 苏坡闷 | 来源:发表于2018-06-20 21:39 被阅读0次

在昨天写东西的时候,要向mysq中插入一条数据,在我插入数据时,我有在数据中的一个字段添加了中文。导致中文插不进去,今天捣鼓了一段时间,成功将中文添加到了数据库,我猜想原因有二:

  1. 我的sql语句写错了,在拼接sql语句的时候,我没有给要插入的中文添上单引号,
        $catname为从客户端提交上来的一个值为中文的不带引号的变量
错误代码:
        $sql = "insert into cat(catname) values($catname)";
        $sql = "insert into cat(catname) values(".$catname.")";
正确代码:
        $sql = "insert into cat(catname) values('".$catname."')";

2.数据库的默认字符集错了,
没有将数据库的默认字符集改成utf-8格式,因为mysql的默认字符集为latin1,而不是utf-8,gbk等支持中文的字符集。解决方法:
修改数据库的配置文件,将数据库的安装目录下的my-default.ini文件复制出来,改格式为my.ini,并且添加[mysql]# 设置mysql客户端默认字符集default-character-set=utf8 # 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8,最终的结果如下所示:

# 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.

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8   //设置数据库默认编码

[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

# These are commonly set, remove the # and set as required.
basedir = E:\environment\mysql\mysql56
datadir = E:\environment\mysql\mysql56\data
# port = .....
# server_id = .....
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8   //设置服务器编码,


# 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 

至此,在解决完以上两个内容后,成功的将带中文的sql语句插入了数据库。

总结:
1.数据无法导入,首先检查自己写的sql语句是否正确,
2.查看数据库的编码格式,本次使用的相关的语句为:
show variables like 'character%';
show variables like 'collation%'; //collation:校对;斋日的点心;牧师职务
3.在使用sql语句的时候,发现插入的字符串为数字的时候不需要加引号,中文的时候必须要加引号,此问题还有待研究。

                                                                                   首次编辑时间 2018.6.20

相关文章

  • 中文没办法插入mysql中。

    在昨天写东西的时候,要向mysq中插入一条数据,在我插入数据时,我有在数据中的一个字段添加了中文。导致中文插不进去...

  • Mysql编码问题

    操作系统:Ubuntu 14.04 Mysql版本:5.5.46 由于需要在Mysql中插入中文,因此就需要将My...

  • Mysql解决无法插入中文,显示中文

    你是否遇到过这样的问题,尝试在Mysql中插入中文,但是显示插入错误,尝试显示写入数据库的中文,结果全是部显示乱码...

  • mysql设置编码

    mysql默认编码是latin1,而我们存储中文一般用utf8,如果你用jdbc向mysql中插入中文会报错,下面...

  • MySQL错误

    在MySQL中,插入中文如果报错:ERROR 1366 (HY000): Incorrect string val...

  • 技术杂项积累

    MySQL命令行向表中字段插入中文字符乱码问题,解决方法:

  • Python——MySQL数据库存取中文

    数据库:MySQL 直接向数据库中插入含有中文的数据,中文部分显示为‘’??‘’,解决步骤如下: 1、数据库中创建...

  • Spring boot+Mybatis+MySQL插入中文乱码

    现象: 搭建spring boot+mybatis+mysql时出现插入mysql的中文出现乱码???。 现象分析...

  • spring boot jpa 连接mysql问题汇总

    1、jpa插入mysql时中文乱码 (1)在mysql中新建查询 show variables like 'cha...

  • Mac IDEA MySQL数据库插入中文乱码

    Mac IDEA MySQL 插入中文乱码 数据库插入中文乱码问题,很大原因是由于数据库,SQL语句,以及编译器使...

网友评论

      本文标题:中文没办法插入mysql中。

      本文链接:https://www.haomeiwen.com/subject/mkqfyftx.html