初学者往往会犯糊涂,mysql 的默认字符集 latin1 是否支持中文? 初步分析表明,是的, 确实支持中文! (是初步的结论,只做了初步的分析) 1. 先来看看latin1(参考百度百科) Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。 ISO-8859-1编码是 单字节编码

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

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

latin mysql 中文_mysql的latin1支持中文相关推荐

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

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

  2. nginx文件服务器中文路径,nginx配置文件支持中文路径.htm

    nginx配置文件支持中文路径 nginx配置文件支持中文路径 例子: server { color=#ff0000>charset utf-8; listen 8088;         se ...

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

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

  4. mysql默认编码改为gbk_查看改mysql编码方式让它支持中文(gbk或者utf8)

    MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码改为gbk或者utf8. 1.需要以root用户身份登录才可以查看数据库编码方式(以root用户身份登录的命令为:> ...

  5. mysql 中文搜索插件_支持中文的MySQL 5.1+ 全文检索分词插件

    经过不停的尝试和努力,以最新的 mysql 5.1.11-beta 为基础,制作的分词插件已经测试成功,现在发布如下. 由于 mysql 5.1.x 本身的架构作了修改,所以增加分词直接以插件形式方式 ...

  6. mysql查询中文_MySQL中like查询中文问题的解决

    在做MySQL的Like查询是发现中文搜索总是不争取,从网上找到了几个解决方法,大家可以看看:方法一: 解决方法是对于包含中文的字段加上quot 在做MySQL的Like查询是发现中文搜索总是不争取, ...

  7. basename php 中文,php basename不支持中文怎么办

    不久前遇到一段代码使用了basename,我文件名是中文的,每次返回都只有后缀.后来发现basename函数有猫腻,不支持中文文件名,但凡有以中文开头的文件名将被忽略了. 函数说明/** * 从路径中 ...

  8. php伪静态不支持中文,wordpress伪静态如何支持中文(目前不支持分类目录中文)...

    自定义结构可以用你自己喜欢的,比如可以只用用"/%post_id%.html",这样的访问地址就会是"http://xxx.com/id.html":当然你也可 ...

  9. linux怎么添加中文服务器,linux不支持中文怎么办_网站服务器运行维护

    linux如何实现图形界面与命令行界面的切换_网站服务器运行维护 linux实现图形界面与命令行界面的切换的方法是:执行[init 3]命令可以切换到命令行模式,执行[init 5]命令可以切换到图形 ...

最新文章

  1. python 解压js压缩的图片_20行Python代码,无损压缩千百张图片!Python有多强!就不用说了...
  2. 【Debug】— C++ 表达式必须包含类类型
  3. hashmap中的key是有序的么_HashMap?面试?我是谁?我在哪
  4. CentOS6.x下GitLab安装
  5. 回复邮件时如何不要邮件头_如何为阅读,点击和回复率达到100%的CEO设计一封冷邮件...
  6. 新浪微博被罚了,暂停更新微博热搜榜一周
  7. 编码规范(代码优化)
  8. 浅聊||高速PCB过孔设计需要注意这些问题
  9. x-studio教程之 - 导入csb并发布到CocosStudio2.x兼容工程
  10. 我看肖老师的《明日世界-云端计算下的程序设计需求》视频时,做的简单笔记
  11. 流程执行效果如何评估
  12. CC1310开发环境
  13. 1个钟是多久_一个时辰是多久,一个时辰是几个小时?
  14. 一般将来时语法课教案_【语法视频课】第1~50节资料汇总
  15. HDU 1107 武林 大模拟
  16. MATLAB 批量改文件后缀
  17. 平面设计中的简约设计到底指什么?
  18. 自定义控件---继承ViewGroup类方式(循序渐进之第2步效果----图片左右拖动+自动回弹效果)
  19. 【华为OJ】【099-MP3光标位置】
  20. xampp mysql5.6_xampp (php5.6)免费官方版下载-xampp v5.6.36 win32 X86下载 - QT软件园

热门文章

  1. huffman图像编码C语言,Huffman编码 数据结构 C语言
  2. python应用实例论文_python人人网登录应用实例
  3. 数学建模05 —— 模拟退火算法
  4. 2020考研数学一大纲之完全解析(六)
  5. 计算机毕设Python+Vue写字楼物业管理系统(程序+LW+部署)
  6. linux qt开发上位机,QT开发 ROS上位机界面
  7. sql 查询文本字段中值的长度最长的记录
  8. linux中一些隐藏的有趣的命令
  9. 关于GridView中控件的问题
  10. 开关4元、瓷砖7.8元、地板79.... 3.30日广州惊现2014最低价!