搜索
首页 电脑/网络 程序设计 其他编程语言

8这三种编码模式有什么区别?

Windows记事本的ANSI、Unicode、UTF-8这三种编码模式有什么区别?

全部回答

2013-08-25

41 0
编码和笔记本没有关系吧 是网页 的把 不同的编码 在浏览器里选择不同,选择不对 浏览器出现乱码

2013-08-25

54 0
    一句话建议:涉及兼容性考量时,不要用记事本,用专业的文本编辑器保存为不带 BOM 的 UTF-8。 * * * 如果是为了跨平台兼容性,只需要知道,在 Windows 记事本的语境中: •所谓的「ANSI」指的是对应当前系统 locale 的遗留(legacy)编码。
    [1] •所谓的「Unicode」指的是带有 BOM 的小端序 UTF-16。[2] •所谓的「UTF-8」指的是带 BOM 的 UTF-8。[3] GBK 等遗留编码最麻烦,所以除非你知道自己在干什么否则不要再用了。
   UTF-16 理论上其实很好,字节序也标明了,但 UTF-16 毕竟不常用。   UTF-8 本来是兼容性最好的编码但 Windows 偏要加 BOM 于是经常出问题。 所以,跨平台兼容性最好的其实就是不用记事本。
   建议用 Notepad++ 等正常的专业文本编辑器保存为不带 BOM 的 UTF-8。 另外,如果文本中所有字符都在 ASCII 范围内,那么其实,记事本保存的所谓的「ANSI」文件,和 ASCII 或无 BOM 的 UTF-8 是一样的。
     * * * 阮一峰那篇〈字符编码笔记:ASCII,Unicode和UTF-8〉的确很有名,但从那篇文章能看出来他其实还是没完全搞清楚 Unicode 和 UTF-8 的关系。
  他依旧被 Windows 的混乱措词误导。事实上,几年前我读完他那篇文章之后依旧一头雾水,最终还是自己看维基百科看明白的。   所以,那篇文章不值得推荐。 * * * 关于字符集(character set)和编码(encoding),某几篇答案中似乎有些混淆。
   对于 ASCII、GB 2312、Big5、GBK、GB 18030 之类的遗留方案来说,基本上一个字符集方案只使用一种编码方案。   比如 ASCII 这部标准本身就直接规定了字符和字符编码的方式,所以既是字符集又是编码方案;而 GB 2312 只是一个区位码形式的字符集标准,不过实际上基本都用 EUC-CN 来编码,所以提及「GB 2312」时也说的是一个字符集和编码连锁的方案;GBK 和 GB 18030 等向后兼容于 GB 2312 的方案也类似。
     于是,很多人受这些遗留方案的影响而无法理解字符集和编码的关系。 对于 Unicode,字符集和编码是明确区分的。Unicode/UCS 标准首先是个统一的字符集标准。
  而 Unicode/UCS 标准同时也定义了几种可选的编码方案,在标准文档中称作「encoding form」,主要包括 UTF-8、UTF-16 和 UTF-32。   所以,对 Unicode 方案来说,同样的基于 Unicode 字符集的文本可以用多种编码来存储、传输。
   所以,用「Unicode」来称呼一个编码方案不合适,并且误导。 。

2013-08-24

57 0
    带盖的回答,可能一些细节暂无精力查证,如果说错了还请指出。 一句话建议:涉及兼容性考量时,不要用记事本,用专业的文本编辑器保存为不带 BOM 的 UTF-8。 * * * 如果是为了跨平台兼容性,只需要知道,在 Windows 记事本的语境中: 所谓的「ANSI」指的是对应当前系统 locale 的遗留(legacy)编码。
    [1] 所谓的「Unicode」指的是带有 BOM 的小端序 UTF-16。[2] 所谓的「UTF-8」指的是带 BOM 的 UTF-8。[3] GBK 等遗留编码最麻烦,所以除非你知道自己在干什么否则不要再用了。
   UTF-16 理论上其实很好,字节序也标明了,但 UTF-16 毕竟不常用。   UTF-8 本来是兼容性最好的编码但 Windows 偏要加 BOM 于是经常出问题。 所以,跨平台兼容性最好的其实就是不用记事本。
   建议用 Notepad++ 等正常的专业文本编辑器保存为不带 BOM 的 UTF-8。 另外,如果文本中所有字符都在 ASCII 范围内,那么其实,记事本保存的所谓的「ANSI」文件,和 ASCII 或无 BOM 的 UTF-8 是一样的。
     * * * 阮一峰那篇〈字符编码笔记:ASCII,Unicode和UTF-8〉的确很有名,但从那篇文章能看出来他其实还是没完全搞清楚 Unicode 和 UTF-8 的关系。
  他依旧被 Windows 的混乱措词误导。事实上,几年前我读完他那篇文章之后依旧一头雾水,最终还是自己看维基百科看明白的。   所以,那篇文章不值得推荐。 * * * 关于字符集(character set)和编码(encoding),某几篇答案中似乎有些混淆。
   对于 ASCII、GB 2312、Big5、GBK、GB 18030 之类的遗留方案来说,基本上一个字符集方案只使用一种编码方案。   比如 ASCII 这部标准本身就直接规定了字符和字符编码的方式,所以既是字符集又是编码方案;而 GB 2312 只是一个区位码形式的字符集标准,不过实际上基本都用 EUC-CN 来编码,所以提及「GB 2312」时也说的是一个字符集和编码连锁的方案;GBK 和 GB 18030 等向后兼容于 GB 2312 的方案也类似。
     于是,很多人受这些遗留方案的影响而无法理解字符集和编码的关系。 对于 Unicode,字符集和编码是明确区分的。Unicode/UCS 标准首先是个统一的字符集标准。
  而 Unicode/UCS 标准同时也定义了几种可选的编码方案,在标准文档中称作「encoding form」,主要包括 UTF-8、UTF-16 和 UTF-32。   所以,对 Unicode 方案来说,同样的基于 Unicode 字符集的文本可以用多种编码来存储、传输。
   所以,用「Unicode」来称呼一个编码方案不合适,并且误导。 * * * [1] Windows 里说的「ANSI」其实是 Windows code pages,这个模式根据当前 locale 选定具体的编码,比如简中 locale 下是 GBK。
    把自己这些 code page 称作「ANSI」是 Windows 的臭毛病。在 ASCII 范围内它们应该是和 ASCII 一致的。 [2] 把带有 BOM 的小端序 UTF-16 称作「Unicode」也是 Windows 的臭毛病。
  Windows 从 Windows 2000 开始就已经支持 surrogate pair 了,所以已经是 UTF-16 了,「UCS-2」这个说法已经不合适了。  UCS-2 只能编码 BMP 范围内的字符,从 1996 年起就在 Unicode/ISO 标准中被 UTF-16 取代了(UTF-16 通过蛋疼的 surrogate pair 来编码超出 BMP 的字符)。
  都十多年了,求求大家别再误称了…… [3] 把带 BOM 的 UTF-8 称作「UTF-8」又是 Windows 的臭毛病。  如果忽略 BOM,那么在 ASCII 范围内与 ASCII 一致。
  

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
其他编程语言
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
其他编程语言
VB
数据库
C/C++
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
其他编程语言
举报
举报原因(必选):
取消确定举报