C# Encoding

之前做公司项目的时候,对于C#编码这块总是一知半解,所以打算通过这篇笔记对C#编码(Encoding)进行彻底的扫盲,关于编码和字符集的基础知识,请参考字符集和字符编码(Charset & Encoding),看完这篇文章之后,来看本文会更加的轻松。

1、Encoding

(1)、如何生成一个Encoding即一种编码

Encoding位于System.Text命名空间下,是一个抽象类,它的派生类如下图:

要实例化一个Encoding一共有以下两种方式:

a、通过实例化它的派生类,然后通过里式转换实例化一个Encoding,代码如下:

Encoding e=new UTF8Encoding();

b、通过Encoding的静态属性ASCII,Unicode,UTF32,UTF7,UTF8,Default来生成,代码如下:

Encoding e = Encoding.UTF8;

其实b中的静态属性无非是new了一个a中的派生类,有图为证

注:上面通过静态属性生成的Encoding实例,符合单例模式,但是并不适用在多线程环境下,所以当你的Encoding需要全局唯一时,请使用静态属性的方式,而不是通过new的方式。

(2)Encoding.Default

注意(1)中b,Encoding的静态属性中有一个Default,它没有对应的派生类,但是它返回的也是一个Encoding对象,至于返回那种语言的Encoding,取决于取决于你电脑里-->控制面板->区域和语言 里面的设置,也就是ANSI,比如我的电脑设置的是中文,那么对应的就是gb2312,但是如果你的代码不止在一个国家使用,那么就不要使用Encoding.Default,这样会造成乱码,最好使用Encoding.UTF8.

2、如何调用常用编码之外的编码,通过GetEncoding()和GetEncodings()

上面介绍了ASCII,Unicode,UTF32,UTF7,UTF8常规的5中编码方式,但是有一些编码如gb2312就没有对应的派生类,那么获取这类语言对应的Encoding只能通过GetEncoding()和GetEncodings()方法来获取

(1)、GetEncodings()

通过GetEncodings()可以获取所有的编码,代码如下:

EncodingInfo[] infos = Encoding.GetEncodings();

目前为止一共有140种,通过GetEncodings()方法你可以方便的查看所有语言的编码信息,个人开发了一个简单窗体应用程序,来查询不同的编码信息。点击下载

(2)、GetEncoding()

通过这个方法可以获取指定语言的Encoding,当然你必须给出一个codePage或者是name,代码如下:

Encoding ei=Encoding.GetEncoding(936);
Console.WriteLine(ei.WebName);

 

时间: 2024-10-29 00:00:38

C# Encoding的相关文章

The Interpreter and ... 之 Source Code Encoding

在python的源代码文件中,允许使用不同的字符集编码而并非只是ASCII.最好的设置方法是在"#!"之后再多设置一个特殊的行,用来定义源代码文件的编码,就像下面这样: # -*- coding: encoding -*- 通过上诉方式的定义,所有在源代码文件中的字符将都会被看做是(treated  as)指定的编码方式去编码,同时该源文件就允许立即被写入选中的编码的Unicode字符字面量.Python所允许的编码方式,你可以在Python的库参考中找到,在 codecs 这一章节中

“wsimport -keep ”生成客户端报错“Use of SOAP Encoding is not supported.”

本来想用 “wsimport -keep ” 生成客户端,结果报错“Use of SOAP Encoding is not supported.” 应该是缺jar包, 闲麻烦就发现了百度经验上的 这个方法.以下是教程 wsdl文件生成客户端 首先我们需要知道webservice接口地址,这里我的测试地址为http://localhost:8085/Service/Function?wsdl.   右击另存为,保存为.wsdl的文件.   在eclipse中新建一个java项目.   将.wsdl

EBS 11i ojspCompile.pl 编译jsp乱码 encoding

11i环境,一般来说jsp是重启apache后自动编译的,但是因为某些环境设置,需要手动编译jsp. 11i的编译路径:$JTF_TOP/admin/scripts/ojspCompile.pl 编译命令:perl $JTF_TOP/admin/scripts/ojspCompile.pl --compile -p 16 -s xxx.jsp 一个简单的jsp文件test1.jsp,文件编码格式GB2312,代码如下: <%@page language="java" conten

hdu 1020 Encoding

Encoding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40214    Accepted Submission(s): 17846 Problem Description Given a string containing only 'A' - 'Z', we could encode it using the followi

如何设置项目encoding为utf-8

1.鼠标右键点击项目,选择[properties] 2.选择[Resource],在Text file encoding里面选择UTF-8,点击[ok] 大功告成! 木头大哥所发的文章均基于自身实践,各位江湖好汉可以通过:[email protected] 联系之.

svn: Can&amp;#39;t convert string from &amp;#39;UTF-8&amp;#39; to native encoding 解决的方法

今天在down代码时遇到了例如以下问题: [[email protected] ~]$ svn co https://xxxxxxxxxxxxx svn: Can't convert string from 'UTF-8' to native encoding: svn: xxxxxxxx/include/xml_inc/XML/?\194?\184? \194? \180?\194?\188?\195? \190 mcXML.h 这个问题主要是代码中包括了中文名字的文件,svn这边的编码不支持

Non-ASCII character &#39;\xe8&#39; in file xxx.py on line 8, but no encoding declared

使用网上某个python程序,编译时报错: File "xxx.py", line 8         SyntaxError: Non-ASCII character '\xe8' in file xxx.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 原因是缺少编码类型声明:no encoding declared 段首添加一行声明即可:

x264源代码简单分析:熵编码(Entropy Encoding)部分

本文记录x264的 x264_slice_write()函数中调用的x264_macroblock_write_cavlc()的源代码.x264_macroblock_write_cavlc()对应着x264中的熵编码模块.熵编码模块主要完成了编码数据输出的功能. 函数调用关系图 熵编码(Entropy Encoding)部分的源代码在整个x264中的位置如下图所示. 单击查看更清晰的图片 熵编码(Entropy Encoding)部分的函数调用关系如下图所示.   单击查看更清晰的图片 从图中

Base64 Encoding / Decoding in Node.js

[Base64 Encoding / Decoding in Node.js] Here is how you encode normal text to base64 in Node.js: var b = new Buffer('JavaScript');var s = b.toString('base64');// SmF2YVNjcmlwdA== And here is how you decode base64 encoded strings: var b = new Buffer('

Fisher Vector Encoding and Gaussian Mixture Model

一.背景知识 1. Discriminant  Learning Algorithms(判别式方法) and Generative Learning Algorithms(生成式方法) 现在常见的模式识别方法有两种,一种是判别式方法:一种是生成式方法.可以这样理解生成式方法主要是数据是如何生成的,从统计学的角度而言就是模拟数据的分布distribution;而判别式方法,不管数据是如何生成而是通过数据内在的差异直接进行分类或者回归.举个例子你现有的task是去识别一段语音属于哪一种语言.那么生成