繁体字是BIG5编码处理的,简体是GB2132编码处理的!

解决方案 »

  1.   

    我从繁体网页上面读下来的数据应该是big5的。要转换为gb2312
      

  2.   

    可以用
    System.Text.Encoding.GetEncoding("big5").GetBytes(str);
    来获取BIG5编码,获取到byte数组当中,
    然后用
    System.Text.Encoding.GetEncoding("gb2312").GetBytes(bytes);
    来转化获取到的BIG5编码,然后再用
    String Str=Strings.StrConv(big5,VbStrConv.SimlifiedChinese,0);
    来把获取到的繁体中文转成简体中文。
      

  3.   

    查考一下:
    Public Class CMain
        Public Shared Function Big5ToGb2312(ByVal ba() As Byte) As String
            Dim gb2312 As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
            Dim big5 As System.Text.Encoding = System.Text.Encoding.GetEncoding("BIG5")
            ba = System.Text.Encoding.Convert(big5, gb2312, ba)
            Dim s As String
            s = gb2312.GetString(ba)
            s = s.TrimEnd(New Char() {ControlChars.NullChar})
            s = StrConv(s, VbStrConv.SimplifiedChinese)
            Return s
        End Function    Public Shared Function Gb2312ToBig5(ByVal s As String) As Byte()
            s = StrConv(s, VbStrConv.TraditionalChinese)
            Dim gb2312 As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
            Dim big5 As System.Text.Encoding = System.Text.Encoding.GetEncoding("BIG5")
            Dim ba() As Byte = gb2312.GetBytes(s)
            ba = System.Text.Encoding.Convert(gb2312, big5, ba)
            Return ba
        End Function
    End Class
      

  4.   

    to:popcorn(米花),Tomgus(小桥流水):两位大侠的方法我都试过了,好象还是不行.是不是本人太过愚笨.是不是对原始字符串还要做其它处理呢.比如说从文件中读出这些字符的时候要在读取方式上,如
    FileStream Fs=new FileStream(@"c:\text.txt",FileMode.Open);
    BinaryReader Br=new BinaryReader(Fs,Encoding.Default);
    /*就是在上面第二个参数Encoding.Default处有很多选择,如有Ascii,Unicode,Default,utf-8,utf7,GetEncodeing等,是不是在这里就应先做一些处理?然后再*/
    byte[] Origin=Br.ReadBytes(4096);
      

  5.   

    多谢各位!问题已解决,是我们想得太复了,毕竟以前用其它工具做这方面的转换不是很容易的,字典呀,码表什么的,很麻烦.用VB的确太简单了,好象DOTNET中是VB独有的.不过C#中也就行了.哈哈.只要先说明原始字符串中的编码即可,然后就可以使用VB函数了.
    比如说获取流时:
    StreamReader Sr=new StreamReader(StreamName,Encoding.GetEncoding("BIG5")) //一定要说明原始流的编码.然后:
    String Temp=Sr.ReadToEnd().ToString();
    String VaildStr=Microsoft.VisualBasic.StrConv(Temp,VbStrConv.SimplifiedChinese,0);//就ok!
      

  6.   

    因为那个转换默认都是UTF-8编码之间转换的。