• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • mysql的latin1编码支持中文吗?

    网络   2015/5/20 9:22:36

    初学者往往会犯糊涂,mysql 的默认字符集 latin1 是否支持中文? 


    初步分析表明,是的,确实支持中文!(是初步的结论,只做了初步的分析)



    1. 先来看看latin1 (参考百度百科)


    Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。


    ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。


    ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧元符号出现的比较晚,没有被收录在ISO-8859-1当中。


    因为ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃。换言之,把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题。这是个很重要的特性,MySQL数据库默认编码是Latin1就是利用了这个特性。ASCII编码是一个7位的容器,ISO-8859-1编码是一个8位的容器。


     

    2. 稍微再想想字符集


        是的,不用纠结太多了,如果数据库内表的字符集是latin1,那么默认情况下中文也可被支持!


        · latin1覆盖了所有单字节的值,任何其他的码流都可以被看做latin1


        · 把一个gbk编码的串写入latin1的表,不会有任何问题,保存的是原封不动的字节流


        · 从表中读取已写入的串也不会有任何问题,且读出的字节流就和当初写入的完全一致

     


    读取出来以后,如果在终端下,就会理解成locale类型(如果locale系gbk,当时写入的gbk中文串可正常回显)


    读取出来以后,如果要写入文件,则文件编码方式即当时写入的字节流编码,如gbk写入的,读出存入文件后,文件编码也是gbk!但是如果混着写(utf-8 + gbk),那编辑器就犯蒙了,就可能会显示会有乱码。


    注: 纯文本文件大多无文件头,编辑器是通过字节流自己识别编码方式和字符集的


     

    3. 综上,建DB和访问DB时如果都采用默认的latin1,那就不仅仅支持中文,而是支持任意的编码方式!

     


    附送几个数据库中文编码的经验教训:


    1. 基于可维护的角度,虽然latin1没什么问题,但是还是尽量换成utf8或者gb系列


    2. 出现乱码时:


    SHOW VARIABLES LIKE 'character%'

    SHOW VARIABLES LIKE 'collation_%';


    a、要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致;

    b、要保证通讯的字符集与数据库的字符集一致,即character_set_client, character_set_connection与character_set_database一致;

    c、要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致;

    d、要保证程序编码与浏览器、终端编码一致


    3. 要想简单一点的话,就将各个字符集都设为一致的,写入mysql的配置文件,每次用客户端都设置一下字符集(set names 'xxx'),写入和读取时要记得确保字节流的编码是ok的



    笔者近期遇到一个问题,latin1保存汉字导致不同汉字被认为相等的问题,例如“冷梦"与"冷渺"相等


    SHOW VARIABLES LIKE '%coll%';

    collation_connection latin1_swedish_ci

    collation_database latin1_swedish_ci

    collation_server latin1_swedish_ci


    latin1_swedish_ci是忽略大小写的,改为

    select * from tblCharacter where fldCharName = ('冷梦' COLLATE latin1_bin)


    即可解决。


    from http://blog.chinaunix.net/uid-24098129-id-312645.html

    http://blog.csdn.net/qiuyepiaoling/article/details/6956823


    阅读(2739) 分享(0)

    上一篇: 新型DDoS攻击LFA 网易网络被攻击原因
    下一篇: 中国市场的个人版WinRAR软件完全免费了

  • 精彩推荐

    ◆ 导出Excel 格式 mso-number-format
    ◆ JS 银行卡号判断验证
    ◆ StackOverflow网站架构,.NET技术架构解析
    ◆ 移动设备屏幕适配,字体px pt dp的区别?
    ◆ 怎么防止数据库被下载密码不被泄露
    ◆ 58同城沈剑:好的架构是进化来的,不是设计来的
    ◆ 关闭vs2010的托盘提示 "Improve Microsoft Visual Studio performance"
    ◆ CIH病毒作者陈盈豪现状
    ◆ PHP利用mysqli操作数据库方法总结
    ◆ 马云、马化腾、刘强东的童年大揭底!
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。