linux环境编码与程序字节转换思考

本文包含2个主题:

1. linux环境编码。涉及到文件编码,vim编码设置,terminal编码设置之间的关系。

2. linux c/c++程序中如何进行字节编码转换。


最近在做一个windows程序移植linux的项目,其中设计到文本处理,由此衍生出各种字符编码的问题,在这里记录一下。


linux环境编码

文件编码

文件编码指的是文件本身的编码,在文件创建时指定,文件修改时不发生改变。可以通过file命令查看。当文件创建时,默认的文件编码方式是gbk,因为gbk是ASCII的扩展,其0~127的字符是完全一样的。

文件编码是可以改变的,比如vim的set fileencoding就可以改变文件编码。当文件编码发生改变时,其中每一个字符都将重新编码。比如同样一个中文“中”字,在gb18030的文件中占2个字节,而在utf-8的文件中要占3个字节。

vim编码设置

vim可以设置按何种编码打开文件,使用命令:set fileencodings命令,可以设置vim打开文件所采用的编码方式,多个文件编码以逗号分隔。当打开一个文件时,vim按照编码顺序依次尝试,以最可能的编码方式打开目标文件。由于vim对编码的识别并非100%准确,因此在打开的时候可能出现乱码。
vim也可以设置默认的文件保存编码。使用命令:set fileencoding,设置默认的文件编码方式,当新建一个文件时,将以这种编码方式保存。

terminal编码设置

terminal的编码方式常常与vim的编码方式产生混淆。基本来讲:terminal的编码方式只决定了在terminal上显示的字符以何种编码识别。当terminal的编码方式与文件实际的编码方式不匹配时,则显示出来的字符则可能出现乱码。但是terminal的编码方式不会对文件编码造成任何影响,当输入字符并保存时,仍然是按文件自身的编码保存的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值