如题 要调用一个dll dll使用的GBK 返回的也是 GBK 如何转换unicode

解决方案 »

  1.   

    to viena(维也纳nn木人 [IQ=50,EQ<0]) 
    能具体点不?
    encoding 的2个参数 含义
      

  2.   

    你dll返回的形式是什么,如果是byte,用byte.convert,参看msdn中的帮助说明。
      

  3.   

    MSDN中的示例:using System;
    using System.Text;namespace ConvertExample
    {
       class ConvertExampleClass
       {
          static void Main()
          {
             string unicodeString = "This string contains the unicode character Pi(\u03a0)";         // Create two different encodings.
             Encoding ascii = Encoding.ASCII;
             Encoding unicode = Encoding.Unicode;         // Convert the string into a byte[].
             byte[] unicodeBytes = unicode.GetBytes(unicodeString);         // Perform the conversion from one encoding to the other.
             byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
                
             // Convert the new byte[] into a char[] and then into a string.
             // This is a slightly different approach to converting to illustrate
             // the use of GetCharCount/GetChars.
             char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
             ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
             string asciiString = new string(asciiChars);         // Display the strings created before and after the conversion.
             Console.WriteLine("Original string: {0}", unicodeString);
             Console.WriteLine("Ascii converted string: {0}", asciiString);
          }
       }
    }
      

  4.   

    要获得string  关键的是 GBK 没有类似 ascii 的Encoding ascii = Encoding.ASCII
    如何获得 encoding GBK
      

  5.   

    GetEncoding("GBK")这样也可以啊 晕了 我去测试下
      

  6.   

    to 要获得string 关键的是 GBK 没有类似 ascii 的Encoding ascii = Encoding.ASCII
    如何获得 encoding GBK如果要获得string来说,转换是没有什么意义的。你说说具体要做什么吧
      

  7.   

    to Knight94(愚翁)
    我调用dll 返回的个parm是个GBK的string 现在想把他转换成 unicode
    这样可以正确显示出来
    parm 在gbk 得到的是 簨[W騗蟸
    unicode是 论坛已经开通,请到www.webp2p.com/bbs去提问,每天有人执班。
    如何转换
      

  8.   

    Encoding.GetEncoding(936) 这个是gb2312 就不知道可以不可以
      

  9.   

    UnicodeEncoding.Default.GetString(Encoding.GetEncoding(936).GetBytes(parm));
    还是不行
      

  10.   

    Have a try!Method1:
    byte[] bData = Encoding.GetEncoding(936).GetBytes(parm);
    bData = Encoding.Convert( Encoding.GetEncoding(936), Encoding.Unicode, bData );
    string strValue = Encoding.Unicode.GetString( bData );Method2:
    http://blog.csdn.net/knight94/archive/2006/05/01/704645.aspx
      

  11.   

    Method1: 不行Method2 测试下
      

  12.   

    PSTR pGBK;   //指向待转换的GBK字符串
    PWSTR  pUnicode;        //指向转换结果
    //取转换之后的UNICODE字符长度
    int iLength = MultiByteToWideChar (CP_ACP, 0, pGBK, -1, NULL, 0) ;    
    pUnicode = malloc(iLength);
    //转换结束
    MultiByteToWideChar (CP_ACP, 0, pGBK, -1, pUnicode, iLength) 
    free(pUnicode);