字符编码应用 版本:v0.7.0 Crifan Li 摘要 本文主要介绍了字符编码的各种应用,包括常见的字符编码有哪些类型,常见的各种编码 规范和编程语言中对于各种字符编码的支持,常见的各种软件和工具对于字符编码的支持 ,常见的不同操作系统中对于不同编码的支持。 [提 本文提供多种格式供: 示] 在线阅读 HTML HTMLs PDF CHM TXT RTF WEBHELP 下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF WEBHELP HTML版本的在线地址为: http://www.crifan.com/files/doc/docbook/char_encoding_usage/release/html/ char_encoding_usage.html 有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论: http://www.crifan.com/bbs/categories/char_encoding_usage/ 2015-05-24 ┌────────────────────────────────────────────────────────────────────────────┐ │修订历史 │ ├─────────────────────────────────┬─────────────────────────────────┬────────┤ │修订 0.7.0 │2015-05-24 │crl │ ├─────────────────────────────────┴─────────────────────────────────┴────────┤ │ 1. 介绍字符编码的应用 │ │ 2. 添加字符编码简明教程的链接 │ └────────────────────────────────────────────────────────────────────────────┘ 版权 © 2015 Crifan, http://crifan.com 本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 目录 正文之前 1. 目的 2. 声明 1. 常见字符编码类型 2. 常见的规范和编程语言中对于字符编码的支持 2.1. XML的编码声明 2.2. JSON中的字符编码 2.3. HTML的charset 2.4. Python中的字符编码 2.5. C#中的字符编码 2.6. Java中的字符编码 3. 常见工具中所涉及的字符编码 3.1. Notepad中的字符编码 3.2. Notepad2中的字符编码 3.3. Notepad++中的字符编码 3.4. Eclipse中的字符编码 3.5. Sublime中的字符编码 3.6. UltraEdit中的字符编码 4. 常见系统中的对于不同编码的支持 4.1. Windows系统中的字符编码 参考书目 正文之前 目录 1. 目的 2. 声明 1. 目的 本文旨在讲清楚字符编码的在各种不同语言,环境,工具,操作系统等方面的应用。 2. 声明 任何问题、意见、建议等,都欢迎发邮件一起探讨:admin (at) crifan.com。 第 1 章 常见字符编码类型 摘要 关于常见的字符编码的 • 详尽解释,可以参考:字符编码详解 • 精简介绍,可以参考:字符编码简明教程 接着再去看下面的介绍,则就很容易理解了: 目前一些常见的字符编码类型有: 1. 最常见编码类型:ascii utf8 gbk 2. 其次:gb2312,iso8859-1 3. 再次是其他的编码 第 2 章 常见的规范和编程语言中对于字符编码的支持 目录 2.1. XML的编码声明 2.2. JSON中的字符编码 2.3. HTML的charset 2.4. Python中的字符编码 2.5. C#中的字符编码 2.6. Java中的字符编码 摘要 也可以叫做:字符编码在常见规范和语言中的应用 2.1. XML的编码声明 xml文件中,第一行的内容,就包含了字符编码声明 比如: 其中指定了编码类型encoding为UTF-8类型。 2.2. JSON中的字符编码 参考:序列化Python对象 - 深入Python 3 第三, 字符编码的问题是长期存在的。JSON 用纯文本编码数据, 但是你知道, “不存在纯 文本这种东西。” JSON必须以Unicode 编码(UTF-32, UTF-16, 或者默认的, UTF-8)方式存 储, RFC 4627的第3节定义了如何区分使用的是哪种编码。 看起来好像说的是:JSON编码必须是Unicode编码? 有空再去确认。 2.3. HTML的charset HTML中是通过charset来声明当前网页所使用的字符编码是何种类型的 最常见的比如: 其中指定了编码类型charset为UTF-8类型。 2.4. Python中的字符编码 Python 2.x中的str和unicode Python 3.x中的bytes和str 系统默认编码:sys.defencoding???是ANSI -->>导致很多人在使用Python时出现编码错误后,结果去想办法修改sys.defencoding的值 -->>实际上不应该这么做,而应该是搞清楚自己要处理的python文件的编码是什么,然后 加上对应的编码声明 详见: 【整理】Python中用encoding声明的文件编码和文件的实际编码之间的关系 【整理】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的 作用 – 指定文件编码类型 【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法 更多内容可参考另外一个教程: Python专题教程:字符串和字符编码 Python中有个库,专门用来检测字符串是什么编码的。 详见:【已解决】windows下,安装python的chardet | 在路上 2.5. C#中的字符编码 在用C#进行网页处理时,网络爬虫抓取得到网页的原始字符串后,需要解码才能得到 unicode的字符串 详见:【整理】关于HTML网页源码的字符编码(charset)格式(GB2312,GBK,UTF-8, ISO8859-1等)的解释 | 在路上中的"从原始html中解码为对应的unicode字符串" 2.6. Java中的字符编码 Java中第三方库函数可以用来动态地检测字符的编码类型: • juniversalchardet • jchardet • cpdetector • ICU4J 详见:java - What is the most accurate encoding detector? - Stack Overflow 第 3 章 常见工具中所涉及的字符编码 目录 3.1. Notepad中的字符编码 3.2. Notepad2中的字符编码 3.3. Notepad++中的字符编码 3.4. Eclipse中的字符编码 3.5. Sublime中的字符编码 3.6. UltraEdit中的字符编码 摘要 字符编码在常见软件中的应用 3.1. Notepad中的字符编码 notepad 支持不多但也有最基本的。这就是别人拿来演示神奇的保存一个词联通打开后显 示其他字符的奥秘所在 TODO:抽空找到网上流传很广的那个,写一个联还是通,换个编码保持,结果再打开显示 出另外一个字的效果 3.2. Notepad2中的字符编码 3.3. Notepad++中的字符编码 详见: 【crifan推荐】轻量级文本编辑器,Notepad最佳替代品:Notepad++中的:Notepad++的多 种编码支持 3.4. Eclipse中的字符编码 Eclipse中的默认的(文件的字符)编码 3.5. Sublime中的字符编码 sublime 也可以保存成不同编码,虽然支持的不够多 但是对于及时显示当前文件的编码,支持的不是足够好: 【基本解决】Sublime中竟然不能方便地找到哪里可以显示当前文件的编码类型 | 在路上 3.6. UltraEdit中的字符编码 第 4 章 常见系统中的对于不同编码的支持 目录 4.1. Windows系统中的字符编码 摘要 4.1. Windows系统中的字符编码 Windows中系统中的CodePage cmd的默认编码是ANSI 参考书目 [1] 【转】字符编码笔记:ASCII,Unicode和UTF-8