我google了一下没有找到好的方法,或者.net中自带了方法我不知道。
string src = "//u98DE//u5929platform"和string src = "/u98DE/u5929platform"是不同的。
因为后者的输出效果是"飞天",前者却是"/u98DE/u5929platform"
Google出了一个方法,但是测试的时候有问题。所以在原有方法和结合几年前GB2BiG5的经验修订如下:
如果有更好或者简单的方法,谢谢惠及。
public
static
string
UnicodeToChinese(
string
str)
... {
returnConvertTo(str,"unicode");
}
public static string ConvertTo( string str, string encode)
... {
StringBuildertmpStr=newStringBuilder();
for(inti=0;i<str.Length;i++)
...{
if(str[i]=='/'&&str[i+1]=='u')
...{
strings1=str.Substring(i+2,2);
strings2=str.Substring(i+4,2);
intt1=Convert.ToInt32(s1,16);
intt2=Convert.ToInt32(s2,16);
byte[]array=newbyte[2];
array[0]=(byte)t2;
array[1]=(byte)t1;
strings=System.Text.Encoding.GetEncoding(encode).GetString(array);
tmpStr.Append(s);
i=i+5;
}
else
...{tmpStr.Append(str[i]);}
}
returntmpStr.ToString();
}
... {
returnConvertTo(str,"unicode");
}
public static string ConvertTo( string str, string encode)
... {
StringBuildertmpStr=newStringBuilder();
for(inti=0;i<str.Length;i++)
...{
if(str[i]=='/'&&str[i+1]=='u')
...{
strings1=str.Substring(i+2,2);
strings2=str.Substring(i+4,2);
intt1=Convert.ToInt32(s1,16);
intt2=Convert.ToInt32(s2,16);
byte[]array=newbyte[2];
array[0]=(byte)t2;
array[1]=(byte)t1;
strings=System.Text.Encoding.GetEncoding(encode).GetString(array);
tmpStr.Append(s);
i=i+5;
}
else
...{tmpStr.Append(str[i]);}
}
returntmpStr.ToString();
}