当前位置: 技术问答>linux和unix
shell汉字所占字节数如何设置
来源: 互联网 发布时间:2017-04-01
本文导语: 本帖最后由 xinhua0910 于 2013-02-01 16:51:24 编辑 请问有哪些因素影响shell处理时汉字所占字节(一个还是两个字节)?如何设置? 我是通过shell来处理定长数据,但其中有汉字。我在一些机器上通过设置LANG环境变量,可...
我是通过shell来处理定长数据,但其中有汉字。我在一些机器上通过设置LANG环境变量,可以设置汉字是一个字节还是两个。如下:
zgs@yssett:~>cut -c 1-2 aaa
你好
12
ab
zgs@yssett:~>echo $LANG
zh_CN.GB2312
zgs@yssett:~>LANG=C
zgs@yssett:~>cut -c 1-2 aaa
你
12
ab
但,并不是所有机器都可以通过设置LANG来达到目的,在另外的机器上并不能生效,所以,请问大家,除了环境变量LANG,还有哪些因素可以影响汉字所占字节,并且如何设置。
|
没法规定汉字字节长度,只能规定编码类型……
cut -c 会根据文件的编码,取得n个字符,不可能强制规定取多少个字节……
如果想规定字节,就用-b参数……
lz想的太理想化了,你做这种假设的前提就是任何一种编码对于汉字编码都是定长的,那假如一种编码方式对汉字不是定长编码怎么办?你怎么确定下一个字符是双字节还是三字节?甚至是四字节?
另外,LANG只能设置编码类型,LANG=C也是设置编码类型,只能说LANG=C是一种单字节编码方式,但是单字节编码方式可不是只有一种,所以不能说LANG=C就代表所有的单字节编码……
cut -c 会根据文件的编码,取得n个字符,不可能强制规定取多少个字节……
如果想规定字节,就用-b参数……
lz想的太理想化了,你做这种假设的前提就是任何一种编码对于汉字编码都是定长的,那假如一种编码方式对汉字不是定长编码怎么办?你怎么确定下一个字符是双字节还是三字节?甚至是四字节?
另外,LANG只能设置编码类型,LANG=C也是设置编码类型,只能说LANG=C是一种单字节编码方式,但是单字节编码方式可不是只有一种,所以不能说LANG=C就代表所有的单字节编码……
|
目前使用的各种编码中,汉字至少是2字节吧。不可以变为1字节的。。
GB2312的编码,汉字都是2字节。。 如果用utf-8的话,汉字从2字节到3,4字节的都有。
其实我没看明白你的例子,两个结果是一样的啊
GB2312的编码,汉字都是2字节。。 如果用utf-8的话,汉字从2字节到3,4字节的都有。
其实我没看明白你的例子,两个结果是一样的啊
|
查看一下文件aaa的编码
file aaa
|
能否把file aaa命令的结果贴出来看看?
UNIX格式或者DOS格式不属于大家提到的编码问题。
|
跟编码有关系,有些编码汉字是固定2字节长度,有些UTF的编码,汉字长度是可变的