初学者往往会犯糊涂,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

mysql latin1编码_mysql的latin1编码支持中文吗?相关推荐

  1. mysql latin1优点_MySQL数据库latin1详解

    因为ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃.换言 Latin1是ISO-8859-1的别名,有些环境下写作L ...

  2. mysql8默认字符编码_mysql默认字符编码问题

    在mysql中导入一个2m多的数据db.sql,由于.sql 文件不是自己写的,在win下用mysql命令行客户端导入时一直提示错误. 开始导入一直崩溃:mysql server has gone a ...

  3. mysql的字符集编码_MySQL的字符编码设置

    -- 创建数据库时,设置数据库的编码方式 -- CHARACTER SET:指定数据库采用的字符集,utf8不能写成utf-8 -- COLLATE:指定数据库字符集的排序规则,utf8的默认排序规则 ...

  4. mysql 修改字段编码_mysql修改数据库编码字段编码

    //创建数据库并指定编码 create database `test` default character set utf8mb4 collate utf8mb4_unicode_ci //浏览器打印 ...

  5. mysql 拼音查询_mysql实现用拼音搜索中文的数据库实现

    1.创建表: CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` VARCHAR (255) CHARACTER SET gbk NOT N ...

  6. 怎么让mysql支持全球语言_mysql 多语言编码

    ============================================================== 补充材料一: ============================== ...

  7. mysql latin1 中文_mysql latin1 支持中文吗

    匿名用户 1级 2016-04-24 回答 初学者往往会犯糊涂,mysql 的默认字符集 latin1 是否支持中文? 初步分析表明,是的,确实支持中文!(是初步的结论,只做了初步的分析) 1. 先来 ...

  8. mysql latin1 中文_mysql 的 latin1 支持中文

    By fireworks2@foxmail.com 初学者往往会犯糊涂,mysql 的默认字符集 latin1 是否支持中文? 初步分析表明,是的,确实支持中文!(是初步的结论,只做了初步的分析) 1 ...

  9. latin mysql 中文_mysql的latin1支持中文

    初学者往往会犯糊涂,mysql 的默认字符集 latin1 是否支持中文? 初步分析表明,是的, 确实支持中文! (是初步的结论,只做了初步的分析) 1. 先来看看latin1(参考百度百科) Lat ...

最新文章

  1. office 2007全屏快捷键|设置
  2. MySQL 清理slowlog方法
  3. KubeCon 北美前瞻|在 2020 最后,容器领域有哪些值得你关注的话题?
  4. Spring Cloud:connect time out
  5. 如何缩短IDEA行号的距离
  6. NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证
  7. 写给程序员的秘籍:你跟优秀程序员的差距,其实就在这几个方面!
  8. oracle 多版本技术,读书笔记: 关于oracle中多版本的问题
  9. ctf 监听端口_从一道ctf题目学到的绕过长度执行命令姿势 - 华域联盟|chu
  10. MyBatis的ResultMaps之一对一关系
  11. 重启docker容器命令
  12. 114企业网重金收购114库网
  13. mac如何打开php文件夹,苹果Mac系统怎么打开隐藏文件夹Library?_苹果MA
  14. 【苹果家庭推送iMessage】软件安装应用程序访问HealthKit HomeKit
  15. linux log file
  16. Linux查看nginx配置文件
  17. viso绘制技巧(例,绘制太极图)
  18. 2019年CS224N课程笔记-Lecture 13: Contextual Word Representations and Pretraining
  19. 爱奇艺微服务标准技术架构实践
  20. vue+echarts实现热力图

热门文章

  1. IPv6地址结构、地址分类以及表示方法
  2. nodejs调整版本问题
  3. 利用Burp suit扫描漏洞
  4. 会议室预约系统遇到的问题
  5. 22款奔驰E350升级ACC自适应巡航系统,解放您的双脚
  6. Linux仿真不checkquota命令,quotacheck命令不能创建aquota.user和aquota.group文件解决方法...
  7. 《JavaScript权威指南第7版》前言
  8. 【iMessage苹果源码家庭推】tils扩大软件安装大概释放事变是由程序员筑造的,很轻易发生MemoryLeak控制
  9. c语言定时器作用,定时器简单运用
  10. 【IM苹果推iMessage】苹果真机推送自动分配任务,自动分配任务,让您瞄准中高端客户