字符集编码相关知识点

1.汉字编码
GB2312(简体)
BIG5(繁体)
GBK(国标扩展,支持繁体)
Unicode(分成17个panel,0x0000~0x10_0000,一般只用到BMP基础面)


2.Unicode表示方法
UTF-8 使用最广泛的Unicode变长表示方法,在第一个字节中包含字节长度信息
UTF-16BE 也是一种变长表示方法,使用2个或者4个字节表示一个字符
UTF-16LE 同上,小端模式


3.宽字符集
非变长,固定使用2个字节表示一个字符,与Unicode编码相同,但是只能表示基础面字符(0x0000~0xFFFF)
wchar_t chineses_str[] = L"中文字体";
在字符串前面加上‘L’可以将字符强行使用宽字符集表示。
宽字符常用函数包括wcslen()、wprintf()、wsprintf()等


4.gcc编译字符选项
一般在windows中默认使用ANSI(GB2312)编码,编写的.c源文件在linux的gcc编译中需要加入字符集转换选项:
-finput-charset=GBK,-fexec-charset=UTF-8


5.由于Linux内核只能处理UTF-8字符,所以当需要显示根文件系统下的文件名时,一般先翻译成Unicode码后,使用truetype字体显示。
而对于U盘,由于一般使用的是FAT32文件系统,文件名使用的编码方式有两种:
①短文件名格式(mount -t msdos):
②长文件名格式(mount -t vfat):
由于一般U盘的中文文件名都是使用本地编码进行存储的,所以在挂载的时候需要告诉linux,U盘所使用的本地编码的类型(一般是936),同时需要制定应用程序访问这些文件时,使用的编码形式(一般使用utf8),所以推荐的挂载命令是:

mount -t vfat -o codepage=936,iocharset=utf8 /dev/sda4 /mnt/tmp

后面控制台可能会提示警告,这是由于一般FAT32文件名是不区分大小写的,但是对于utf8则区分,可以无视这个警告。


6.内核的编码支持
在内核源码中可以通过make menuconfig配置默认的文件系统与文件名编码支持:

 -> File systems
	 -> DOS/FAT/NT Filesystems

下面有对于FAT文件系统默认的codepage、iocharset配置选项:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值