• mysql insert中文乱码无法插入ERROR 1366 (HY000): Incorrect string value


    ERROR 1366 (HY000): Incorrect string value: 'xB1xEAxCCxE2xD5xE2...' for column 'title' at row 2

    MYSQL经典问题: 
      (ERROR 1366 (HY000): Incorrect string value:'xD5xD4' for column 'name' at row 1)

    网上有好多解决中文乱码的贴, 大致都讲的是修改 %MYSQL_DIR%/my.ini default-character-set=gbk 什么的
    我试过了, 不起作用. (可能是我没处理到位)

    下面是我琢磨了半天,得到的结果, 不知道是否值得提倡, 但目的绝对达到了:

    登陆mysql --->

    进入相应数据库--->

    输入命令: show variables like '%char%';

    得到: 
    +--------------------------+--------------------------+
    | Variable_name      |      Value      |
    +--------------------------+--------------------------+
    | character_set_client       utf8        
    | character_set_connection    utf8 
    | character_set_database     latin1 
    | character_set_filesystem     binary 
    | character_set_results       utf8 
    | character_set_server      utf8 
    | character_set_system      utf8
    | character_sets_dir       D:MySQLsharecharsets 
    +--------------------------+--------------------------+

    如果出现上述情况则需要更改数据库编码: 两种方法, 第一种是一次搞定, 第二种只对当前连接有效,断开连接,恢复更改前状态

    方法1: alter database 数据库名 charset utf8;
    方法2: set character_set_database = utf8;

    再用命令: show variables like '%char%';

    +--------------------------+--------------------------+
    | Variable_name      |      Value      |
    +--------------------------+--------------------------+
    | character_set_client       utf8        
    | character_set_connection    utf8 
    | character_set_database     utf8 
    | character_set_filesystem     binary 
    | character_set_results       utf8 
    | character_set_server      utf8 
    | character_set_system      utf8
    | character_sets_dir       D:MySQLsharecharsets 
    +--------------------------+--------------------------+

    此时编码已经一致, 但是,对数据库中的表进行插入中文字符操作, 仍然会报 : ERROR 1366 (HY000)

    ---> set character_set_client = gbk; 设置插入时接收的编码为GBK, 这样就可以插入中文了

    此时中文字符已经可以插入, 但查询结果却还是乱码, 再更改一处即可:

    ---> set character_set_results = gbk; 设置输出结果的编码为GBK

    注: 这样的设置只对当前连接有关, 连接断开, 这些设置恢复数据库默认设置状态,因此,如果需要,每次连接都得设置!

    另外:ERROR 1366 (HY000)错误主要出现于控制台(cmd/黑窗口) 执行SQL语句插入中文时弹出,
    用mysql-front 软件插入时不会报字符问题, java通过JDBC连接数据库执行executeUpdate("insert 语句") 中文也能成功插入数据且不会报错!

    PHP解决乱码问题只需在连接后加入mysql_query("set names 'gbk'") 就OK!
    如: $conn = mysql_connect("localhost","root",""); 
      mysql_query("set names 'gbk'");

  • 相关阅读:
    【转载】如果你看完这篇文章还不懂计算机时间,那就掐死我吧
    记录 C#中 LINQ 和 SQL 语句 的一些操作数据集合
    记录mysql 存储过程中循环临时表
    记录一个有趣的dotnet开源库。
    将Quartz.Net用于ASP.NET Core 3.0应用程序中的,并实现通过依赖注入获取其他服务
    web api中接收 复杂类型数组参数(对象数组参数)
    网页支付宝支付,通过form表单提交,在苹果手机上无法跳转
    阿里云服务器上搭建FTP服务器,连接时出现:读取目录列表失败的解决办法
    css选择器及float(浮动)
    盒子四大元素
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/5160068.html
Copyright © 2020-2023  润新知