<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sherlock</title>
	<atom:link href="http://www.9tongz.com/sherlock/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.9tongz.com/sherlock</link>
	<description>浮华落尽 平淡归真</description>
	<lastBuildDate>Tue, 14 Feb 2012 03:26:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>.NET中序列化</title>
		<link>http://www.9tongz.com/sherlock/?p=161</link>
		<comments>http://www.9tongz.com/sherlock/?p=161#comments</comments>
		<pubDate>Tue, 14 Feb 2012 03:09:03 +0000</pubDate>
		<dc:creator>sherlock</dc:creator>
				<category><![CDATA[编程手记]]></category>

		<guid isPermaLink="false">http://www.9tongz.com/sherlock/?p=161</guid>
		<description><![CDATA[         大家都知道.NET中的对像中存着许多的状态（成员变量），当我们想把对象保存起来，我们就要通过数据库把数值存放起来，下次使用时在从数据库中把数值取出，重新赋值到对像上。开发人员就要编写一大串的机械式的代码，就不能把有效果的时间发在业务上。现在向大家介绍个对像序列化的功能，可以把对像序列化成二进制或soap格式的文件，当下次需要在用该对像的状态就可以直接反序列化该文件，生成对像。  [Serializable]     public class MyClass     {         public string Name         {             get;             set;         }         public int Age         {             get;             set;         }     }         在对像上加个[Serializable]属性就是告诉编译器该类是可以被序列化的，         对客户端还要使用有命名空间System.Runtime.Serialization.Formatters.Binary中的BinaryFormatter类，将MyClass 的对像序列化成二进制的文件流写入到文件中         客户端例子             MyClass my = new MyClass();             my.Name = “sherlock”;             my.Age = [...]]]></description>
			<content:encoded><![CDATA[<p>         大家都知道.NET中的对像中存着许多的状态（成员变量），当我们想把对象保存起来，我们就要通过数据库把数值存放起来，下次使用时在从数据库中把数值取出，重新赋值到对像上。开发人员就要编写一大串的机械式的代码，就不能把有效果的时间发在业务上。现在向大家介绍个对像序列化的功能，可以把对像序列化成二进制或soap格式的文件，当下次需要在用该对像的状态就可以直接反序列化该文件，生成对像。</p>
<p><strong><span style="color: #ff00ff;"> [Serializable]</span></strong><br />
<strong><span style="color: #ff00ff;">    public class MyClass</span></strong><br />
<strong><span style="color: #ff00ff;">    {</span></strong><br />
<strong><span style="color: #ff00ff;">        public string Name</span></strong><br />
<strong><span style="color: #ff00ff;">        {</span></strong><br />
<strong><span style="color: #ff00ff;">            get;</span></strong><br />
<strong><span style="color: #ff00ff;">            set;</span></strong><br />
<strong><span style="color: #ff00ff;">        }</span></strong></p>
<p><strong><span style="color: #ff00ff;">        public int Age</span></strong><br />
<strong><span style="color: #ff00ff;">        {</span></strong><br />
<strong><span style="color: #ff00ff;">            get;</span></strong><br />
<strong><span style="color: #ff00ff;">            set;</span></strong><br />
<strong><span style="color: #ff00ff;">        }</span></strong><br />
<strong><span style="color: #ff00ff;">    }</span></strong></p>
<p>        在对像上加个[Serializable]属性就是告诉编译器该类是可以被序列化的，</p>
<p>        对客户端还要使用有命名空间System.Runtime.Serialization.Formatters.Binary中的BinaryFormatter类，将MyClass 的对像序列化成二进制的文件流写入到文件中</p>
<p>       <strong> 客户端例子</strong></p>
<p><span style="color: #ff00ff;"><strong>            MyClass my = new MyClass();<br />
            my.Name = “sherlock”;<br />
            my.Age = int.MaxValue;<br />
            System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();</strong></span></p>
<p>      <strong>    <span style="color: #ff00ff;">  //创建一个文件流</span></strong><br />
<strong><span style="color: #ff00ff;">            Stream stream = new FileStream(@”c:\MyClass.bin”, FileMode.Create, FileAccess.Write);</span></strong></p>
<p><strong><span style="color: #ff00ff;">            using (stream)</span></strong><br />
<strong><span style="color: #ff00ff;">            {</span></strong><br />
<strong><span style="color: #ff00ff;">                //这里就是进行序列化了</span></strong><br />
<strong><span style="color: #ff00ff;">                formatter.Serialize(stream, my);</span></strong><br />
<strong><span style="color: #ff00ff;">            }</span></strong></p>
<p><span style="color: #ff00ff;">       </span> 对像被序列化进去了。当你的程序闭关下次要用的时候就将c:\MyClass.bin的文件反序列化出来就好了，反序列化出来的对像的Nam值还是凤姐，Age值还是int.MaxValue</p>
<p>        现在我将介绍如何反序列化</p>
<p>       <strong> 客户端例子</strong></p>
<p><span style="color: #ff00ff;"><strong>            //不用NEW了反序列化后会给出一个该对像的引用</strong></span><br />
<span style="color: #ff00ff;"><strong>            MyClass my;</strong></span><br />
<span style="color: #ff00ff;"><strong>            System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            //打开一个文件流</strong></span><br />
<span style="color: #ff00ff;"><strong>            Stream stream = new FileStream(@”c:\MyClass.bin”, FileMode.Open, FileAccess.Read);</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            using (stream)</strong></span><br />
<span style="color: #ff00ff;"><strong>            {</strong></span><br />
<span style="color: #ff00ff;"><strong>                //这里就是反进行序列化了</strong></span><br />
<span style="color: #ff00ff;"><strong>                my = (MyClass)formatter.Deserialize(stream);</strong></span><br />
<span style="color: #ff00ff;"><strong>            }</strong></span></p>
<p>        现在最简单的 序列化和反序列化都介绍完了大家可以看出，我们不用去把数据库在数据库中在去数据库取数据构造对像，序列化的功能在一些特殊的场景还是比较方便的</p>
<p><strong>        序列化引用类型</strong></p>
<p>        序列化类默认的情况下是要求他的所有的成员都是要可序列化的（除事件、委托、显式定义不可序列化）</p>
<p><span style="color: #ff00ff;"><strong>  [Serializable]</strong></span><br />
<span style="color: #ff00ff;"><strong>    public class MyClass</strong></span><br />
<span style="color: #ff00ff;"><strong>    {</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Name</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>        public int Age</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>        public Work MyWork</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>    }</strong></span></p>
<p><span style="color: #ff00ff;"><strong>    [Serializable]</strong></span><br />
<span style="color: #ff00ff;"><strong>    public class Work</strong></span><br />
<span style="color: #ff00ff;"><strong>    {</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Name</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Address</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>    }</strong></span></p>
<p>        其实很简单的，就是把MyClass类中有的类成员都加上为[Serializable]属性即可，.NET会去MyClass中遍历所有的成员，智能的跳过类的循环引用。如果MyClass中的Work类型不加[Serializable]属性，那就是说Work不可序列化，那.NET就会报出错误。</p>
<p><strong>        不可序列化成员</strong></p>
<p>        如果你在MyClass中有个SqlConnection类型成员，大家都知道SqlConnection中管理的是数据库的连接，不好被序列化，所以我们在设计的时候不能把SqlConnection序列化了，我们要在SqlConnection的成员中把它加上 [NonSerialized]属性告诉.NET这个类不要被序列化，当反序列化的时候SqlConnection就为null。</p>
<p><strong><span style="color: #ff00ff;"> [Serializable]</span></strong><br />
<strong><span style="color: #ff00ff;">    public class MyClass</span></strong><br />
<strong><span style="color: #ff00ff;">    {</span></strong><br />
<strong><span style="color: #ff00ff;">        public string Name</span></strong><br />
<strong><span style="color: #ff00ff;">        {</span></strong><br />
<strong><span style="color: #ff00ff;">            get;</span></strong><br />
<strong><span style="color: #ff00ff;">            set;</span></strong><br />
<strong><span style="color: #ff00ff;">        }</span></strong><br />
<strong><span style="color: #ff00ff;">        public int Age</span></strong><br />
<strong><span style="color: #ff00ff;">        {</span></strong><br />
<strong><span style="color: #ff00ff;">            get;</span></strong><br />
<strong><span style="color: #ff00ff;">            set;</span></strong><br />
<strong><span style="color: #ff00ff;">        }</span></strong><br />
<strong><span style="color: #ff00ff;">        [NonSerialized]</span></strong><br />
<strong><span style="color: #ff00ff;">        Work myWork;</span></strong></p>
<p><strong><span style="color: #ff00ff;">        public Work MyWork</span></strong><br />
<strong><span style="color: #ff00ff;">        {</span></strong><br />
<strong><span style="color: #ff00ff;">            get</span></strong><br />
<strong><span style="color: #ff00ff;">            {</span></strong><br />
<strong><span style="color: #ff00ff;">                return myWork;</span></strong><br />
<strong><span style="color: #ff00ff;">            }</span></strong><br />
<strong><span style="color: #ff00ff;">            set</span></strong><br />
<strong><span style="color: #ff00ff;">            {</span></strong><br />
<strong><span style="color: #ff00ff;">                myWork = value;</span></strong><br />
<strong><span style="color: #ff00ff;">            }</span></strong><br />
<strong><span style="color: #ff00ff;">        }</span></strong><br />
<strong><span style="color: #ff00ff;">    }</span></strong></p>
<p><strong><span style="color: #ff00ff;">    public class Work</span></strong><br />
<strong><span style="color: #ff00ff;">    {</span></strong><br />
<strong><span style="color: #ff00ff;">        public string Name</span></strong><br />
<strong><span style="color: #ff00ff;">        {</span></strong><br />
<strong><span style="color: #ff00ff;">            set;</span></strong><br />
<strong><span style="color: #ff00ff;">            get;</span></strong><br />
<strong><span style="color: #ff00ff;">        }</span></strong><br />
<strong><span style="color: #ff00ff;">        public string Address</span></strong><br />
<strong><span style="color: #ff00ff;">        {</span></strong><br />
<strong><span style="color: #ff00ff;">            set;</span></strong><br />
<strong><span style="color: #ff00ff;">            get;</span></strong><br />
<strong><span style="color: #ff00ff;">        }</span></strong><br />
<strong><span style="color: #ff00ff;">    }</span></strong></p>
<p>&nbsp;</p>
<p>        这样Work对像就不会被序列化到文件流中，当被反序列化时就MyWork属性就为null了。</p>
<p>&nbsp;</p>
<p><strong>        序列化SOAP文件</strong></p>
<p>        要序列化成SOAP就要先用引用System.Runtime.Serialization.Formatters.Soap命名空间中的SoapFormatter类了。SoapFormatter是一个Soap的格式器</p>
<p><strong><span style="color: #ff00ff;"> [Serializable]<br />
    public class MyClass<br />
    {<br />
        public string Name<br />
        {<br />
            get;<br />
            set;<br />
        }<br />
        public int Age<br />
        {<br />
            get;<br />
            set;<br />
        }<br />
        public Work MyWork<br />
        {<br />
            get;<br />
            set;<br />
        }<br />
    }</span></strong></p>
<p>   <span style="color: #ff00ff;"><strong> [Serializable]</strong></span><br />
<span style="color: #ff00ff;"><strong>    public class Work</strong></span><br />
<span style="color: #ff00ff;"><strong>    {</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Name</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Address</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>    }</strong></span></p>
<p><span style="color: #ff00ff;"><strong>    class Program</strong></span><br />
<span style="color: #ff00ff;"><strong>    {</strong></span><br />
<span style="color: #ff00ff;"><strong>        static void Main(string[] args)</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            MyClass my = new MyClass();</strong></span><br />
<span style="color: #ff00ff;"><strong>            my.Name = “凤姐”;</strong></span><br />
<span style="color: #ff00ff;"><strong>            my.Age = int.MaxValue;</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            Work work = new Work();</strong></span><br />
<span style="color: #ff00ff;"><strong>            work.Address = “你家隔壁”;</strong></span><br />
<span style="color: #ff00ff;"><strong>            work.Name = “不知道”;</strong></span><br />
<span style="color: #ff00ff;"><strong>            my.MyWork = work;</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            //这里new 的是Soap格式的了</strong></span><br />
<span style="color: #ff00ff;"><strong>            System.Runtime.Serialization.IFormatter formatter = new SoapFormatter();</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            //创建一个文件流</strong></span><br />
<span style="color: #ff00ff;"><strong>            Stream stream = new FileStream(@”c:\MyClass.xml”, FileMode.Create, FileAccess.Write);</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            using (stream)</strong></span><br />
<span style="color: #ff00ff;"><strong>            {</strong></span><br />
<span style="color: #ff00ff;"><strong>                //这里就是进行序列化了</strong></span><br />
<span style="color: #ff00ff;"><strong>                formatter.Serialize(stream, my);</strong></span><br />
<span style="color: #ff00ff;"><strong>            }</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>    }</strong></span></p>
<p><span style="color: #000000;"><span style="color: #ff00ff;"><strong>       </strong></span> 这样子就把”凤姐”这个对像序列成SOAP格式，生成到你的C盘里了</span></p>
<p><span style="color: #000000;">        SOAP格式的序列化文件就有一定的可读性了，这样就可以更好的跨平台的反序列化对像了。不过从速度上来说，当然还是二进制文件更快，可是二进制文件不好进行跨平台的反序列化，各有各的优点吧。</span></p>
<p>&nbsp;</p>
<p><strong>        序列化泛型</strong></p>
<p>&nbsp;</p>
<p>其实泛型和非泛型其实没有什么不同，不过要注意以下两点：</p>
<p>&nbsp;</p>
<p>1.泛型只支持BinaryFormatter格式，不支持SOAP格式</p>
<p>&nbsp;</p>
<p>2.泛型序列化的类型和反序列化的类型要一致，如果把MyClass&lt;int&gt; 类型序列化，你不能反序列化出MyClass&lt;string&gt;类型。</p>
<p><span style="color: #ff00ff;"><strong>  [Serializable]</strong></span><br />
<span style="color: #ff00ff;"><strong>    public class MyClass&lt;T&gt;</strong></span><br />
<span style="color: #ff00ff;"><strong>    {</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Name</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>        public int Age</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>        public T MyWork</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>    }</strong></span></p>
<p><span style="color: #ff00ff;"><strong>    [Serializable]</strong></span><br />
<span style="color: #ff00ff;"><strong>    public class Work</strong></span><br />
<span style="color: #ff00ff;"><strong>    {</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Name</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>        public string Address</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            set;</strong></span><br />
<span style="color: #ff00ff;"><strong>            get;</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>    }</strong></span></p>
<p><span style="color: #ff00ff;"><strong>    class Program</strong></span><br />
<span style="color: #ff00ff;"><strong>    {</strong></span><br />
<span style="color: #ff00ff;"><strong>        static void Main(string[] args)</strong></span><br />
<span style="color: #ff00ff;"><strong>        {</strong></span><br />
<span style="color: #ff00ff;"><strong>            MyClass&lt;Work&gt; my = new MyClass&lt;Work&gt;();</strong></span><br />
<span style="color: #ff00ff;"><strong>            my.Name = “凤姐”;</strong></span><br />
<span style="color: #ff00ff;"><strong>            my.Age = int.MaxValue;</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            Work work = new Work();</strong></span><br />
<span style="color: #ff00ff;"><strong>            work.Address = “你家隔壁”;</strong></span><br />
<span style="color: #ff00ff;"><strong>            work.Name = “不知道”;</strong></span><br />
<span style="color: #ff00ff;"><strong>            my.MyWork = work;</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            //泛型只支持BinaryFormatter格式，不支持SOAP格式</strong></span><br />
<span style="color: #ff00ff;"><strong>            System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            //创建一个文件流</strong></span><br />
<span style="color: #ff00ff;"><strong>            Stream stream = new FileStream(@”c:\MyClass.bin”, FileMode.Create, FileAccess.Write);</strong></span></p>
<p><span style="color: #ff00ff;"><strong>            using (stream)</strong></span><br />
<span style="color: #ff00ff;"><strong>            {</strong></span><br />
<span style="color: #ff00ff;"><strong>                //这里就是进行序列化了</strong></span><br />
<span style="color: #ff00ff;"><strong>                formatter.Serialize(stream, my);</strong></span><br />
<span style="color: #ff00ff;"><strong>            }</strong></span><br />
<span style="color: #ff00ff;"><strong>        }</strong></span><br />
<span style="color: #ff00ff;"><strong>    }</strong></span></p>
<p>&nbsp;</p>
<p>我们利用OnDeserialized属性事件人工完成了SqlConnection的反序列化。</p>
<p>&nbsp;</p>
<p>注意:</p>
<p>&nbsp;</p>
<p>1.事件的签名一定要是 void &lt;方法名&gt;(StreamingContext context)这个样子的，context只有在高级的场景中才用到，现在先不讨论。</p>
<p>&nbsp;</p>
<p>2.最好是把事件方法写成私有的，以避免子类的重载件方法产生异常。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.9tongz.com/sherlock/?feed=rss2&#038;p=161</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# GB2312和UTF8互转</title>
		<link>http://www.9tongz.com/sherlock/?p=155</link>
		<comments>http://www.9tongz.com/sherlock/?p=155#comments</comments>
		<pubDate>Mon, 05 Dec 2011 08:50:50 +0000</pubDate>
		<dc:creator>sherlock</dc:creator>
				<category><![CDATA[编程手记]]></category>

		<guid isPermaLink="false">http://www.9tongz.com/sherlock/?p=155</guid>
		<description><![CDATA[public string GB2312ToUtf8(string gb2312String) { Encoding fromEncoding = Encoding.GetEncoding(“gb2312&#8243;); Encoding toEncoding = Encoding.UTF8; return EncodingConvert(gb2312String, fromEncoding, toEncoding); } &#160; public string Utf8ToGB2312(string utf8String) { Encoding fromEncoding = Encoding.UTF8; Encoding toEncoding = Encoding.GetEncoding(“gb2312&#8243;); return EncodingConvert(utf8String, fromEncoding, toEncoding); } &#160; public string EncodingConvert(string fromString, Encoding fromEncoding, Encoding toEncoding) { byte[] fromBytes = fromEncoding.GetBytes(fromString); byte[] toBytes = Encoding.Convert(fromEncoding, [...]]]></description>
			<content:encoded><![CDATA[<table width="95%" border="1" cellspacing="2" cellpadding="5" align="center" bgcolor="#000000">
<tbody>
<tr>
<td bgcolor="#000000" height="29"><span style="color: #ffff00;"><br />
public string GB2312ToUtf8(string gb2312String)<br />
{<br />
Encoding fromEncoding = Encoding.GetEncoding(“gb2312&#8243;);<br />
Encoding toEncoding = Encoding.UTF8;<br />
return EncodingConvert(gb2312String, fromEncoding, toEncoding);<br />
}</span></p>
<p>&nbsp;</p>
<p><span style="color: #ffff00;">public string Utf8ToGB2312(string utf8String)</span><br />
<span style="color: #ffff00;"> {</span><br />
<span style="color: #ffff00;"> Encoding fromEncoding = Encoding.UTF8;</span><br />
<span style="color: #ffff00;"> Encoding toEncoding = Encoding.GetEncoding(“gb2312&#8243;);</span><br />
<span style="color: #ffff00;"> return EncodingConvert(utf8String, fromEncoding, toEncoding);</span><br />
<span style="color: #ffff00;"> }</span></p>
<p>&nbsp;</p>
<p><span style="color: #ffff00;">public string EncodingConvert(string fromString, Encoding fromEncoding, Encoding toEncoding)</span><br />
<span style="color: #ffff00;"> {</span><br />
<span style="color: #ffff00;"> byte[] fromBytes = fromEncoding.GetBytes(fromString);</span><br />
<span style="color: #ffff00;"> byte[] toBytes = Encoding.Convert(fromEncoding, toEncoding, fromBytes);</span></p>
<p><span style="color: #ffff00;">string toString = toEncoding.GetString(toBytes);</span><br />
<span style="color: #ffff00;"> return toString;</span><br />
<span style="color: #ffff00;"> }</span></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.9tongz.com/sherlock/?feed=rss2&#038;p=155</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

