`
pikaqiuweixiao
  • 浏览: 5322 次
  • 性别: Icon_minigender_2
  • 来自: 怀化
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

编码问题

阅读更多
  一。数据库安装时设定的字符集编码是utf8

       1.当前的字符集编码是:

          Server characterset:    utf8

          Db       characterset:    utf8

          Client  characterset:    Latin1

          Conn.  characterset:    Latin1

      (1)下创建数据库

           插入中文数据时,能够执行操作,但是显示的是乱码

      (2)修改字符集编码,变成:

              Server characterset:    utf8

             Db       characterset:    utf8

             Client  characterset:    gbk

             Conn.  characterset:    gbk

            插入中文数据时,能够执行操作,且数据显示正常

     (3)修改字符集编码,变成:

             Server characterset:    utf8

             Db       characterset:    utf8

             Client  characterset:    utf8

             Conn.  characterset:    utf8

            插入中文数据,操作不能执行,报错如:IIncorrect string value :'\xB9\xA4\Xbe\XDF'for          colunmn'sort_name'at row 1

二。安装数据库时是Latin1

       1.当前字符集编码:

            Server characterset:    Latin1

             Db       characterset:   Latin1

             Client  characterset:    Latin1

             Conn.  characterset:    Latin1

        (1)下创建数据库

               插入中文数据时,能够执行操作,但是显示的是乱码

         (2)修改字符集编码为utf8

                Server characterset:    Latin1

                Db       characterset:   Latin1

               Client  characterset:    utf8

               Conn.  characterset:    utf8

             插入中文数据,操作不能执行

        (3)修改字符集编码为gbk

                 Server characterset:    Latin1

                Db       characterset:   Latin1

               Client  characterset:    gbk

               Conn.  characterset:    gbk

            插入中文数据,操作不能执行

          (4)在安装数据库时设定字符集编码为utf8,并把当前数据库的字符集编码也设为utf8

                  1)当前字符集编码为utf8:

                        Server characterset:    utf8

                        Db       characterset:   utf8

                        Client  characterset:    utf8

                        Conn.  characterset:    utf8

                      插入中文数据,操作不能执行

                    2)当前字符集编码为gbk:

                        Server characterset:    utf8

                        Db       characterset:   utf8

                        Client  characterset:   gbk

                        Conn.  characterset:    gbk

                      插入中文数据,操作不能执行

                    3)当前字符集编码为Latin1:

                        Server characterset:    utf8

                        Db       characterset:   utf8

                        Client  characterset:    Latin1

                        Conn.  characterset:    Latin1

                      插入中文数据时,能够执行操作,但是显示的是乱码

结论:当在安装mysql数据库时设定的字符集编码是Latin1,不支持中文,在这样的环境下创建的数据库,无论怎样修改字符集都不能正常插入中文数据。并且当把数据库移到安装数据库时就设定的字符集是utf8的数据库环境下,设置字符集为utf8或则gbk时,插入中文数据,操作直接就不能执行。



所以,想在数据库中插入中文数据,安装数据库时就必须设定字符集是支持中文的。





三。在安装数据库时就设定字符集编码为utf8的环境下

     1.当前字符集编码为:

         Server characterset:    utf8

         Db       characterset:    utf8

          Client  characterset:    utf8

          Conn.  characterset:    utf8

      下创建数据库

     (1)插入中文数据,操作不能成功

      (2)修改字符集编码为:

             Server characterset:    utf8

            Db       characterset:    utf8

           Client  characterset:    gbk

           Conn.  characterset:    gbk

         插入中文数据,显示正常

     (3)安装数据库时就设定字符集编码为gbk

           1)当前字符集编码

                Server characterset:    gbk

               Db       characterset:    gbk

              Client  characterset:    gbk

              Conn.  characterset:    gbk

            插入中文数据,操作正常,显示正常

            2)当前字符集编码为utf8

                  Server characterset:    gbk

                 Db       characterset:    utf8

                Client  characterset:    utf8

                Conn.  characterset:    utf8

                插入中文数据,操作不能执行

四。在安装数据库时就设定字符集编码为gbk的环境下

     1.当前 字符集编码是:

              Server characterset:    gbk

               Db       characterset:    gbk

              Client  characterset:    gbk

              Conn.  characterset:    gbk




      下创建数据

            (1)       插入中文数据,操作能执行,并能正常显示

            (2)       当前字符集编码为utf8

                       Server characterset:    gbk

                      Db       characterset:    gbk

                     Client  characterset:    utf8

                    Conn.  characterset:    utf8

                插入中文数据,操作不能执行




结论:要想能向数据库正常插入中文,必须满足以下条件:

<!--[if !supportLists]-->(1)       <!--[endif]-->安装数据库时,要把字符集设定为能支持中文的gbk或则utf8

<!--[if !supportLists]-->(2)       <!--[endif]-->把数据库的Client Characterset和Conn. Characterset的字符集都设定为gbk

其中,设定字符集编码的指令为:set names ‘charactername’

查看字符集编码的指令为:status

         至于为什么吗要这样做,我也讲不出原因!



    按理说,只要character_set_client、character_set_results、character_set_connection的编码字符集的设置一样就行了,可为什么用SET NAMES 'charset_name'把他们设置为utf8就不能插入中文,而设置为gbk就能插入中文?

    对于这个问题,我实在 搞不清楚,得去查些资料才行!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics