V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lzjun
V2EX  ›  程序员

阮一峰的文章有哪些常见性错误

  •  1
     
  •   lzjun ·
    lzjun567 · 2017-02-27 20:48:40 +08:00 · 18196 次点击
    这是一个创建于 2832 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如《字符编码笔记: ASCII , Unicode 和 UTF-8 》 是阮老师 10 年前写的一篇关于字符编码的科普文章,现在用 Google 搜关键字该文章依然名列前茅,可见他的文章有多大影响力,但里面的内容是否正确是值得商榷的事。

    中文维基百科对 Unicode 的解释也是让人一头雾水,摸不着头脑。看看阮老师怎么说:

    可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode ,就像它的名字都表示的,这是一种所有符号的编码。

    这句话读起来很拗口,有三个地方出现了「编码」二字。不知阮老师对「编码」的理解是什么?但可以肯定的是这三个「编码」在这句话里面不是同一个意思。

    「编码」作动词使用时就是把一个字符(严格一点说是字符在字符集中的编号 code point )转换成一个字节序列,以便在网络传输或者存储到文本中。比如「好」在 Unicode 中的编号是 U+597d ,经过 UTF-8 编码后会转换成二进制序列是 '\xe5\xa5\xbd' 。作为名词使用时,就是指一种具体的编码实现方式,比如 ASCII 编码, GBK 编码, UTF-8 编码

    其实 Unicode 是一个囊括了世界上所有字符的字符集,其中每一个字符都对应有唯一的编码值( code point ),然而它并不是一种什么编码格式,仅仅是字符集而已。 Unicode 字符要存储要传输怎么办,它不管,可以用 UTF-8 、 UTF-16 。

    再来看阮老师说 Unicode 的第二个问题:

    第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果 Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是 0 ,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

    Unicode 并没有统一规定每个符号用三个或者四个字节表示。 Unicode 只规定了每个字符对应到唯一的代码值( code point ),代码值 从 0000 ~ 10FFFF 共 1114112 个值 ,真正存储的时候需要多少个字节是由具体的编码格式决定的。比如:字符 「 A 」用 UTF-8 的格式编码来存储就只占用 1 个字节,用 UTF-16 就占用 2 个字节,而用 UTF-32 存储就占用 4 个字节。

    再看来看这张图:

    windows-notepad.jpg

    阮老师对 Unicode 编码的解释是:

    Unicode 编码指的是 UCS-2 编码方式,即直接用两个字节存入字符的 Unicode 码。这个选项用的 little endian 格式。

    UCS-2 是什么鬼, UCS-2 是使用两个定长的字节来表示一个字符,而 UTF-16 是使用两个变长的字节,遇到两个字节没法表示时,会用 4 个字节来表示,因此 UTF-16 可以看作是在 UCS-2 的基础上扩展而来的。而 UTF-32 与 USC-4 是完全等价的。

    之所以在 Windows 下有 Unicode 编码这样一种说法,其实是 Windows 的一种错误表示方法,它真正的编码类型是 UTF-16LE 编码。

    他又说:

    Unicode 规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做"零宽度非换行空格"( ZERO WIDTH NO-BREAK SPACE ),用 FEFF 表示。这正好是两个字节,而且 FF 比 FE 大 1 。

    如果一个文本文件的头两个字节是 FE FF ,就表示该文件采用大头方式;如果头两个字节是 FF FE ,就表示该文件采用小头方式

    这儿就错得更加离谱了,不想说了,直接原文链接 http://mp.weixin.qq.com/s?__biz=MjM5MzgyODQxMQ==&mid=2650366798&idx=1&sn=5db3b152c99ff96f7a477313cfb175e0&chksm=be9cd81a89eb510c1d22091d89df648ab689a01fd77ebd4361567dd7ec238e754c3d5f10715c&mpshare=1&scene=23&srcid=0227ViQqcIpvWmVwkOiYxyxT#rd

    第 1 条附言  ·  2017-02-28 09:44:40 +08:00
    发现大家已经不再是讨论问题本身了,阮一峰老师的文章绝大部分还是很有有指导性的。在此给大家造成的困扰,表示抱歉。

    散了吧,不值得浪费大家时间。
    115 条回复    2017-03-06 09:08:13 +08:00
    1  2  
    Dzinlife
        101
    Dzinlife  
       2017-02-28 15:07:24 +08:00
    你第一句话就承认了人家写的是科普文章,科普懂不懂?科普排名靠前不好吗?靠前的难道应该是你所擅长的茴字四种写法?
    fulvaz
        102
    fulvaz  
       2017-02-28 15:14:01 +08:00
    @clino 哼哼哼, 不上道了吧

    作为阮老师前脑残粉的我怎么会没看过阮老师的书
    https://book.douban.com/subject/26268552/
    wupher
        103
    wupher  
       2017-02-28 16:41:32 +08:00
    从礼节上来说,发现错误应该先私信作者,作者不鸟你,再到评论或者论坛里面喷。
    holy_sin
        104
    holy_sin  
       2017-02-28 17:05:01 +08:00
    撕起来
    chuanqirenwu
        105
    chuanqirenwu  
       2017-02-28 17:21:32 +08:00 via iPhone
    很正常,现在很多人 utf-8 和 unicode 概念混在一起,但只要你不是搞 unicode 字符标准制定等工作的,并不影响在日常中的应用和理解。
    artandlol
        106
    artandlol  
       2017-02-28 17:29:37 +08:00
    @qq286735628 你是不是当年 bug 吧干坏事的那个?
    liuyanjun0826
        107
    liuyanjun0826  
       2017-02-28 17:33:16 +08:00
    阮一峰写文章的目的是卖广告,你我写文章的目的是吸引基佬,各取所需。
    clino
        108
    clino  
       2017-02-28 18:22:19 +08:00
    @fulvaz #102 我的意思是为什么你有这种转变?你的评论?
    纯好奇,我也不是他的什么粉
    leekafai
        109
    leekafai  
       2017-02-28 20:05:14 +08:00 via Android
    op 显然有些情绪在里面了,说阮的博客评论里面没有指正错误只有盲目崇拜,其实你如果能像给别人博文抓虫那么仔细地去看评论,是有的。
    Balthild
        110
    Balthild  
       2017-02-28 20:38:04 +08:00 via Android
    既然人无完人,那便要给人指责之权利。
    自知有错,还不准人说,这是什么道理?
    bigpigeon
        111
    bigpigeon  
       2017-02-28 21:20:01 +08:00
    我当时看这篇博文时也是没搞清 unicode 和 utf-x 的区别
    感觉阮一峰很多博文都是在自己都没理解清楚的情况下强行写作的, rsa 那篇也是
    fulvaz
        112
    fulvaz  
       2017-02-28 23:00:40 +08:00
    @clino 因为有太多太多主观性的错误啊

    比如, 支持计划生育, 还表明支持的理由. 但那不是叫做有思想啊, 只是单纯人云亦云而已.

    至于其他内容, 还算平均线以上, 但是远远算不上可以出书..... 你看看目录就知道了
    qq286735628
        113
    qq286735628  
       2017-03-01 17:00:22 +08:00
    @artandlol bug 吧是什么鬼?
    artandlol
        114
    artandlol  
       2017-03-01 17:22:16 +08:00
    @qq286735628 一个跟你头像一样的人 干了坏事跑路的故事
    douglas1997
        115
    douglas1997  
       2017-03-06 09:08:13 +08:00
    讲的很好, 解答了我之前的很多困惑。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:05 · PVG 08:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.