Encode.Unicode.GetString再UTF8.GetBytes

解决方案 »

  1.   

    如果不需要代码处理的话,copy到Unicode的文本文件中,另存为UTF-8的也可以解决
      

  2.   

    嘿嘿 Encode.Unicode.GetString(UTF8.GetBytes(STRING));   呵呵 
      

  3.   

    UTF8.GetBytes( Encode.Unicode.GetString());
      

  4.   

    System.Text.UTF8Encoding.GetEncoding(你的转的字符串)
      

  5.   


    你已抛出“unicode“这个词儿,就误导了许多容易被误导的人。在.net平台中,任意字符串你都是unicode的。因此你自要说“字符串内容”就行了,这样人家就知道跟 Ecnoding.Unicode 没有关系了。你的这个字符串中的内容,是表达byte[]的逐自己进行Hex字符编码。读取它的内容可以使用(例如)这样的转换函数public static byte[] ToHex(this string hexString)
    {
        var datas = new byte[hexString.Length / 2];
        var j = 0;
        for (var i = 0; i < hexString.Length; i += 2)
            datas[j++] = Convert.ToByte(hexString.Substring(i, 2), 16);
        return datas;
    }
      

  6.   

    另外,你的后半句“如何转为UTF-8”我实在是不懂是什么意思?!无法作答。描述一个问题,要从别人的角度出发,要说一个“流程”而绝不能仅仅停留在标题概念上。你自己虽然努力“蹦出”挺技术化的词儿,但是我觉得如果按字面去理解只能是胡乱猜,你描述根本是“漫无目的”的,无法猜测这应该是什么操作。
      

  7.   

    端序问题,用BigEndianUnicode。
    对应字符串是
    转UTF-8字节数组:
    var s = "5bd25047624b673a89814e0a7f51002c51fa77015c3175286f2b6e385305002c00355143003600305146002c0031003051430031003200305146002c56de590d003400360035003200355f00901a0036003051466d4191cf003b56de590d0034003600350032003100305f00901a00310032003051466d4191cf30024e2d56fd75354fe1";
    s = s.Length % 2 == 0 ? s : "0" + s;
    var result = String.Join("", 
    Encoding.UTF8.GetBytes(
    Encoding.BigEndianUnicode.GetString(
    (
    from i in Enumerable.Range(0, s.Length / 2)
    select Convert.ToByte(s.Substring(i * 2, 2), 16)
    ).ToArray()
    )
    ).Select(b => b.ToString("X"))
    )
    ;
    Console.WriteLine(result);