下载此文档

附录a.字符编码 +3+在linux+c编程中使用unicode和utf-8.doc


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
附录 A. 字符编码3. 在LinuxC编程中使用Unicode和UTF-8目前各种Linux发行版都支持UTF-8编码,当前系统的语言和字符编码设置保存在一些环境变量中,可以通过locale命令查看:$localeLANG=-8LC_CTYPE="-8"LC_NUMERIC="-8"LC_TIME="-8"LC_COLLATE="-8"ARY="-8"LC_MESSAGES="-8"LC_PAPER="-8"LC_NAME="-8"LC_ADDRESS="-8"LC_TELEPHONE="-8"LC_MEASUREMENT="-8"LC_IDENTIFICATION="-8"LC_ALL=常用汉字也都位于BMP中,所以一个汉字的存储通常占3个字节。例如编辑一个C程序:#include<>intmain(void){printf("你好\n");return0;}源文件是以UTF-8编码存储的:$od- # i n c l u d e   < s t d i o .0000020 h > \n \n i n t   m a i n ( v o i0000040 d ) \n { \n \t p r i n t f ( "3442750000060240345245275 \ n " ) ; \n \t r e t u r0000100 n   0 ; \n } \n0000107其中八进制的344375240(十六进制e4bda0)就是“你”的UTF-8编码,八进制的345245275(十六进制e5a5bd)就是“好”。把它编译成目标文件,"你好\n"这个字符串就成了这样一串字节:e4bda0e5a5bd0a00,汉字在其中仍然是UTF-8编码的,一个汉字占3个字节,这种字符在C语言中称为多字节字符(MultibyteCharacter)。运行这个程序相当于把这一串字节write到当前终端的设备文件。如果当前终端的驱动程序能够识别UTF-8编码就能打印出汉字,如果当前终端的驱动程序不能识别UTF-8编码(比如一般的字符终端)就打印不出汉字。也就是说,像这种程序,识别汉字的工作既不是由C编译器做的也不是由libc做的,C编译器原封不动地把源文件中的UTF-8编码复制到目标文件中,libc只是当作以0结尾的字符串原封不动地write给内核,识别汉字的工作是由终端的驱动程序做的。但是仅有这种程度的汉字支持是不够的,有时候我们需要在C程序中操作字符串里的字符,比如求字符串"你好\n"中有几个汉字或字符,用strlen就不灵了,因为strlen只看结尾的0字节而不管字符串里存的是什么,求出来的是字节数7。为了在程序中操作Unicode字符,C语言定义了宽字符(WideCharacter)类型wchar_t和一些库函数。在字符常量或字符串字面值前面加一个L就表示宽字符常量或宽字符串,例如定义wchar_tc=L'你';,变量c的值就是汉字“你”的31位UCS编码,而L"你好\n"就相当于

附录a.字符编码 +3+在linux+c编程中使用unicode和utf-8 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小16 KB
  • 时间2019-12-12
最近更新