MacOS wc(wordcount)计算带有UTF-8字符Å的错误单词
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MacOS wc(wordcount)计算带有UTF-8字符Å的错误单词相关的知识,希望对你有一定的参考价值。
[在字符串wc
上使用Ås
(瑞典字母大写字母Å)时,当我期望单词计数1时,我得到了单词计数2。
计算单词Å
,sÅ
得出1,感觉正确。
$ echo sÅ | wc
1 1 4
$ echo Å | wc
1 1 3
计算单词Ås
,sÅ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字符Å的错误单词的主要内容,如果未能解决你的问题,请参考以下文章