`
xitong
  • 浏览: 6400700 次
文章分类
社区版块
存档分类
最新评论

常见字符编码精解

 
阅读更多

曾几何时,多次研究过字符编码的问题,每次都是了解到大部分,以至于出现新的编码问题时还不得不去重新寻找资料。在这里我重新完整的整理一遍,简明扼要,分享出来也方便日后查看。

1.常见的字符编码,按照轻到重介绍

1-1.ASCII

最基本的编码,西文字符集的国际标准,有7位(128标准字符)和8位(128标准字符+128扩充字符)两种。

1-2.GB2312

GB开头的都是国标码,也就是中国制定的编码。简体中文字符集,2字节(16位)存储,7000多个简体汉字字符。

1-3.GBK

GB2312的扩展,完全兼容GB2312多加了繁体字2字节(16位)存储,20000多个汉字字符。

1-4.GB18030

GBK的扩展,良好兼容GBKGB2312多加了少数名族文字,变长编码,有124字节的。

1-5.ISO-8859-1

国际标准化组织制定的,又称Latin-1或西欧语言,当然还有ISO-8859-2Latin-2或叫中欧语言)。。。。。。单字节(8位),不支持中文。这下知道为什 eclipseproperties文件默认ISO-8859-1不能保存中文了吧,都要设置成GBK或者UTF-8才行。

1-6.ANSI

这个最诡异了,不同国家和地区编码有不同标准,在英文操作系统下代表ASCII,在简体中文操作系统下代表GB2312,在日文操作系统下代表JIS。。。。。。可 以理解为本地编码,或者严格来说不算是编码,是个代号。存储单元嘛当然是变动的了,理解为指向某种编码的指针也可以。

1-7.UNICODE

这个编码是真正的实现了世界字符的一统。固定长度4字节,在某个国际标准下,某个国际标准是2字节),世界上每一种字符都对应着一个Unicode编码。弊端也显而易 见,存储单字节的英文浪费空间,效率不高。有时候我们看到一些编辑器转码后产生\ua2b3\u43ab就是转换成Unicode的方式表示,\u是声明16进制的意思,后面跟 416进制的数,如a2b3。做web国际化时候这个没少解除吧。

1-8.UTF-8

简单说,就是为了解决UNICODE的弊端出现了可变长度的UTF-8

2.各种操作系统默认编码

先声明,部分操作系统是可以更改系统编码的,如Linux。这里列举的是最常规的情况。

Linux------UTF-8(你喜欢装中文版自己面壁去)

P-Windows3.2和苹果OS就是以GB2312为基本汉字编码

Windows95/98以及以上则以GBK为基本汉字编码,记得cmd下使用mysql必须执行的setnamesgbk

3.关于回车换行(\r\n

这个还是挺让人疑惑的。

\r代表回车,就是把光标移动到行首

\n代表换行,就是光标移动到下一行

也许你钻牛角尖,换行不就行了,为什么还要回车?早起的OS很傻,你要是换行不回车,光标往下移动一行,但是不会置于行首。这个OS主要就是指WINDOWS,所以 WINDOWS里面这个传统延续到今天。当然,不同的OS有不同的表现,有映象看过一份材料,如果你要真正“换行”,如下:

WINDOWS--------\r\n(回车换行)

LINUX--------------\n(只有换行,没有回车)

MACOSX---------\r(只有回车,没有换行)

MACOSX应该不叫IOS吧?高手指点咯

以上细微区别在用vim处理文本的时候要特别小心,尤其是使用了正则表达式。


分享到:
评论

相关推荐

    VC—关键技术精解电子版

    VC提供了宽字符和多字节字符集的支持,理解如何处理字符串和文本是现代编程的重要一环。 通过阅读《VC—关键技术精解》,工程师不仅可以深入理解上述技术,还能学习到如何有效地组织和调试代码,以及如何利用Visual...

    电子通信设计资料C语言趣味程序百例精解

    常见的信道编码方法有汉明码、卷积码等。通过C语言实现这些编码算法,可以在接收端有效地检测并纠正传输过程中可能产生的错误。 #### 实例3:数字滤波器设计 数字滤波器是信号处理中的一项关键技术,用于去除噪声或...

    知识共享-jsp乱码处理精解(雷惊风).

    在Java Web开发中,尤其是使用JSP技术进行Web应用开发时,汉字编码问题是一个常见的挑战。主要体现在两个方面:一是表单提交数据时出现乱码,二是直接通过URL参数传递中文字符时出现乱码。 #### 2. 表单提交数据...

    Perl 实例精解(第三版).pdf

    8.2 统一字符编码(Unicode) 练习7 是sed、awk或grep吗?给出Perl的另外一个作用 第9章 获得文件句柄 9.1 用户定义文件句柄 9.1.1 打开文件:open函数 9.1.2 打开文件读 9.1.3 打开文件写 9.1.4 Win...

    Swift面试20问精解.docx

    - **字符串**(String):用于表示文本,Swift中的字符串支持Unicode字符编码。 - **数组**(Array):存储相同类型的元素集合。 - **字典**(Dictionary):键值对的集合,键和值可以是任意类型。 #### 5. Swift中...

    JavaScript编程精解

    - **修复**: 自动修复一些常见的编码问题。 #### 六、最佳实践 1. **代码格式化**: 使用 Prettier 或 ESLint 等工具保持代码风格一致。 2. **代码重构**: 不断改进现有代码,提高可读性和可维护性。 3. **单元...

    50个必备的实用jQuery代码段

    ### 50个必备的实用jQuery代码段精解 #### 1. 修改jQuery默认编码 在Web开发中,处理不同编码格式是常见的需求。当你的项目需要与非UTF-8编码的数据交互时,如GB2312,可以通过以下代码片段修改jQuery的默认编码:...

    ireport中文学习用户手册+实例

    13. **字体编码说明**:针对中文环境,特别讨论了如何处理中文字符编码问题,确保中文在报表中正常显示。 14. **字段、参数和变量精解**:深入解析这些元素的内部工作原理,提供实例演示,提升报表设计的精准度和...

    C、C++、数据结构等一些基础编程的资料,欢迎刚迈入编程的小伙伴下载阅读

    6. **设计模式精解-GoF 23种设计模式解析附C++**:设计模式是解决软件设计中常见问题的模板,共有23种经典的设计模式,如单例模式、工厂模式、观察者模式等。通过C++实现这些模式,可以提升代码的可读性和可维护性...

    零基础学算法源码 算法 常用算法 排序 查找

    3. **贪心策略**:每一步都采取当前看起来最优的选择,如霍夫曼编码和Prim最小生成树算法。 4. **回溯法**:在搜索解决方案时遇到无效选择就退回,尝试其他路径,如八皇后问题和N-皇后问题。 5. **递归**:函数调用...

    java面试题

    ### Java面试题精解 #### 1. 作用域关键词详解 在Java中,`public`, `private`, `protected`, `default`(不写时的默认访问级别)这四个关键字决定了类成员(变量、方法)的可见性范围。具体规则如下: - **public**:...

Global site tag (gtag.js) - Google Analytics