zoukankan      html  css  js  c++  java
  • 线上问题

    一、问题描述                                                                                           

       另外一个系统调用服务接口api:/xxx/create?aName=&time=&...,数据没有保存成功提示SQL state [HY000]; error code [1366]; Incorrect string value: 'xA1xAAxA1xAAxB0xFC...' for column 'content' at row 1; 相信大家看到这个错误码大概就知道什么原因了。

       而当在windows系统中去调用接口并使用相同的数据库,数据竟保存成功了但是数据库中查看数据aName值却是乱码。

       为什么在不同的操作系统中,相同的操作截然不同的结果?

    二、原因分析                                                                                           

       1、查看服务接口api的编码

         通过UrlDecode对接口api解码发现,接口使用方对接口api进行了GBK编码。

       2、MYSQL字符集

         SHOW VARIABLES LIKE 'character%';

         

        解决问题的方法就很明了了,将接口api进行UTF-8编码就可以解决此问题。

    我们知道Windows系统默认的编码格式GBK,Linux系统默认的编码格式UTF-8。

    三、MYSQL字符集修改                                                                               

        UTF-8 ——支持几乎所有字符

        GB2312 ——是简体中文的码

        GBK ——支持简体中文及繁体中文中的任何一个。

        MySQL对于字符集的指定可以细化到一个数据库、一张表、一列(字段),应该用什么字符集。

        在create语句中通过添加character set 参数指定相应的字符集,如果不指定,则会默认使用其上一个层级的字符集。

        

        我们可以通过修改mysql的my.cnf文件中的字符集键值,

    1、在[client]字段里加入default-character-set=utf8,如下:
    [client]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    default-character-set=utf8

    2、在[mysqld]字段里加入character-set-server=utf8,如下:
    [mysqld]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    character-set-server=utf8

    3、在[mysql]字段里加入default-character-set=utf8,如下:
    [mysql]
    no-auto-rehash
    default-character-set=utf8

    修改完成后,service mysql restart重启mysql服务就生效。注意:[mysqld]字段与[mysql]字段是有区别的。

    4、如果上面的都修改了还有乱码,在connection连接上进行编码修改

    SET character_set_client = utf8;
    SET character_set_results = utf8;
    SET character_set_connection = utf8;

    四、总结                                                                                                

       1、对接口api制定详细使用说明 aName进行UTF-8编码,避免刚接触的使用者调到坑中。

       2、系统中涉及编码 统一使用UTF-8。

    由于本人经验有限,文章中难免会有错误,请浏览文章的您指正或有不同的观点共同探讨!

  • 相关阅读:
    格式控制符
    sort快速排序法
    堆积排序
    oracle常用命令
    C#中int和System.Int32理解总结
    IIS 7.5中的配置
    WPF循序渐进:XAML入门 .
    怎样找到excel两列之间同行相同的数据
    pl/sql functions and cbo costing
    Oracle 学习纲要
  • 原文地址:https://www.cnblogs.com/exceptioneye/p/4850845.html
Copyright © 2011-2022 走看看