MacOS wc(wordcount)计算带有UTF-8字符Å的错误单词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MacOS wc(wordcount)计算带有UTF-8字符Å的错误单词相关的知识,希望对你有一定的参考价值。

[在字符串wc上使用Ås(瑞典字母大写字母Å)时,当我期望单词计数1时,我得到了单词计数2。

计算单词Å得出1,感觉正确。

$ echo sÅ | wc
       1       1       4
$ echo Å | wc
       1       1       3

计算单词ÅssÅs得出2,感觉不正确。

$ echo sÅs | wc
       1       2       5
$ echo Ås | wc
       1       2       4

只有字母Å可以复制,而没有åäöÄÖ中的任何一个。

$ echo "Ås" | wc
       1       2       4
$ echo "Äs" | wc
       1       1       4
$ echo "Ös" | wc
       1       1       4

启动终端时,我使用Mac OS的默认区域设置,如下所示:

$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

我在MacOS Sierra和Lion上获得了相同的结果。

只需检查字符串Ås的外观。

$ echo "Ås" | hexdump
0000000 c3 85 73 0a                                    
0000004

因此,这与语言环境设置有关,并且Mac OS设置错误的方式-至少与命令wc有关吗?

这是Mac OS版本wc中有关UTF-8字符Å的错误吗?

[或者,当使用wc -c(默认值)时,是否将字符85检测为空格字符,即ASCII表中的省略号? ([wc -m但是提供了字数的预期答案)

或者我在这里缺少明显的东西吗?

答案

的确!这取决于语言环境设置-UTF_8是可变长度编码方案。直的latin1字符(旧的Ascii字符)被编码为1字节,而带有重音符号的瑞典字符为2字节(或更多?),尤其是带有环的A。希望对您有所帮助

以上是关于MacOS wc(wordcount)计算带有UTF-8字符Å的错误单词的主要内容,如果未能解决你的问题,请参考以下文章

理解MapReduce计算构架

理解MapReduce计算构架

个人项目 WordCount

WordCount

WordCount的实现

wordcount