- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于C字符编码探讨
基于C字符编码探讨
摘要:在C#中,将字符串视为对象,关键字string本身是一种引用类型,在底层则对应到String类,在NET教程的描述中,String类的编码通常认为是Unicode,但在实际使用过程中,如果不去注意字符编码格式,则会在显示字符时出现乱码的现象,本文的目的就是来探讨C#中字符的编码格式,以及如何在编码之间进行转换。
关键词:C#字符;编码;探讨
中图分类号:TP312.1文献标识码:A文章编号:1007-9599 (2010) 15-0000-02
Based on the Character Encoding of C#
Wu Hao1,2
(1.University Institute of Computer Science and Technology,Suzhou215006,China;2.Mudu High School,Suzhou City,Jiangsu Province,Suzhou215101,China)
Abstract:In C#,the string as an object,the keyword string itself is a reference type,at the bottom corresponds to the String class,the description in the NET tutorial,String encoding the class generally considered to be Unicode,but in practice Use,if they do not pay attention to character encoding format,will be garbled characters in the display phenomenon,the purpose of this paper is to explore the characters in C# code format,and how to convert between the encoding.
Keywords:C# character;Coding;Of
在编写程序时如果要在内存、文件或电子邮件中读取一个字符串,那么应该知道它是使用什么编码方案,否则就不能将它正确的解释或显示给用户。如果没有正确获得对应的编码格式,那么在具体显示或打印等输出字符的时候会发现有乱码的现象,这时首先要判断是不是我们解释用的编码方式出错了。在很多的C#教程中在讲解String类时,都认为String类的编码是Unicode,从流中读取字符串时,给出的演示代码都是将编码设定为System.Text.Encoding.Default,这种方式在很多情况下都能获得正确的字符串内容,但这时就无从得知其具体采用的是何种编码了。并且也不是所有情况下,使用System.Text.Encoding.Default都能正常的显示字符。以下是我在C#编程环境下对字符编码格式的一个简单探讨:
一、字符编码的格式
我们最早学习到的字符编码应该是美国上世纪60年代制定的ASCII码,在这套编码中,规定了英语字符和二进制编码的一一对应关系,每个字符对应到7位二进制编码,字节中的最高位置0,这样最多能表示128个字符,英语字符使用ASCII码是足够了,但世界上很多国家的文字都要比英语字符复杂的多,每种语言都可以设定一组对应的二进制编码,如欧洲国家的字符则是将一个字节中的全部8位二进制位都用上,这样可以最多表示256个字符,而GB2312编码的汉字则在计算机中占用2个字节的存储空间,以下是ASCII码和GB2312编码存储方式的详细介绍:
(一)ASCII码,ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进,大写的字母A是65(二进。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0,所以ASCII码只需一位字节保存。
(二)GB2312,简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256x256=65536个符号。gb2312编码使用的是区位码寻字方式,1-9区存放中文符号,16-55区存放一级汉字,56-87区存放二级汉字,如第1个汉字位于16区的第1位,为:‘啊’,所以1601,即0x1001就代表了该‘啊’的区位码值。
这样就带来了一个问题:比如说有两个字节的空间来存放字符,如何去知道这两个字节是表示两个字母还是一个汉字或者是其他的符号呢?或
文档评论(0)