分页: 1 / 1

中文字符到底占几个字节?

发表于 : 2010-12-07 19:34
Messiya
有这个一个文件 a.txt
——————————————————————
13623652956 乌鲁木齐
13298652397 北京
——————————————————————
cat a.txt| awk '{if (length($2)==8) print $0}'
有时候输出正常
13623652956 乌鲁木齐
有时候,就没有输出,需要改成length($2)==4,才正常

这是怎么回事啊

Re: 中文字符到底占几个字节?

发表于 : 2010-12-07 19:51
退避九舍
编码不同,长度不同。。。

Re: 中文字符到底占几个字节?

发表于 : 2010-12-07 20:00
Messiya
退避九舍 写了:编码不同,长度不同。。。
在同一个机器上运行,怎么还会变啊
是不是可以指定编码啊

Re: 中文字符到底占几个字节?

发表于 : 2010-12-09 11:26
astolia
这个问题首先要看你当前的终端语言编码和文件编码。当两者一致时,awk的统计是按字符而非字节来算的。当不一致,就说不清到底算成多少个了

经过测试如下

“乌鲁木齐”长度:
当控制台为UTF8,文件为UTF8时,长度为4
当控制台为GBK,文件为GBK时,长度为4
当控制台为UTF8,文件为GBK时,长度为8
当控制台为GBK,文件为UTF8时,长度为6

代码: 全选

echo $LANG
来看当前终端的编码

代码: 全选

file a.txt
来看文件编码,注意如果是GBK的话,会被当作ISO-8859

要设置终端编码,用

代码: 全选

export LANG=zh_CN.UTF8   #设置成UTF8
export LANG=zh_CN.GBK   #设置成GBK

Re: 中文字符到底占几个字节?

发表于 : 2010-12-09 11:32
eexpress
不要试图用字节去处理中文。

Re: 中文字符到底占几个字节?

发表于 : 2010-12-15 17:59
icmmed
:em11