有这样一张表,想通过前面的U8代码得到字符,与第二列对比防止错误,有啥好办法没?
30E0 ム
30E1 メ
30E2 モ
30E3 ャ
30E5 ュ
30E6 ユ
30E7 ョ
30E8 ヨ
30E9 ラ
30EA リ
30EB ル
30EC レ
30ED ロ
30EF ワ
30F3 ン

解决方案 »

  1.   

    幫顶
    朋友 有空就看看这个问题。沒空就算了,謝過了.http://community.csdn.net/Expert/topic/5686/5686047.xml?temp=.8212702
      

  2.   

    UTF8Encoding e = new UTF8Encoding();
    e.GetString(你要转化的byte[]); //这个用来解码,返回一个string
    e.GetByte(string s); // 这个用来编码,返回byte[]
      

  3.   

    直接定义!~
    char c='\u30E0'  //ム
    这是unicode 码! 相信你是从windows 文字code表里找的!~
    呵呵!~~
      

  4.   

    转成Char型
    char ch = '\u30E0';
                MessageBox.Show(ch.ToString());
      

  5.   

    //将UTF-8编码转换成字符串
            public string FromUtf8(string str)
            {
                char[] hexDigits = {  '0', '1', '2', '3', '4', 
                                      '5', '6', '7', '8', '9', 
                                      'A', 'B', 'C', 'D', 'E', 'F'};
                List<byte> byteList = new List<byte>(str.Length / 3);            if (str != null)
                {
                    List<string> strList = new List<string>();
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < str.Length; ++i)
                    {
                        if (str[i] == '%')
                        {
                             strList.Add(str.Substring(i, 3));
                        }                    
                    }                foreach (string tempStr in strList)
                    {
                        int num = 0;
                        int temp = 0;
                        for (int j = 0; j < hexDigits.Length; ++j)
                        {
                            if (hexDigits[j].Equals(tempStr[1]))
                            {
                                temp = j ;
                                num = temp << 4; 
                            }
                        }                    for (int j = 0; j < hexDigits.Length; ++j)
                        {
                            if (hexDigits[j].Equals(tempStr[2]))
                            {
                                num += j;
                            }
                        }                    byteList.Add((byte)num);
                    }
                }            return Encoding.UTF8.GetString(byteList.ToArray());
            }
      

  6.   

    char c='\u30E0'  的方法可行谢谢了,原来如此简单,基础知识不行啊还有个问题30E0是可变的,我想在循环中取得字符如何做?
    不能用直接连接字符串,有啥方法没?
    "\u"+dr[1].ToString();谢谢zhchg6666() ,有空研究一下
      

  7.   

    // 数据库存的是字符串 ?char ch = (char)byte.Parse(dr[1].ToString(), NumberStyles.AllowHexSpecifier);
      

  8.   

    // OR
    char ch = (char)byte.Parse("0x" + dr[1].ToString());
      

  9.   

    我是想从EXCEL表中导入数据库,EXCEL表中有编码和字符,为了保证字符的准确性准备通过编码获得字符。
    Jinglecat(晓风残月 >> 问题需简洁,错误要详细):你的方法不行啊,提示输入string格式不对(Input string was not in a correct format.)
      

  10.   

    sorry, 对于 char ch = (char)byte.Parse("0x" + dr[1].ToString()); 前导 0x 似乎无法解析LZ 若准备使用将 UTF8 转换为 char,对于日文字符可能会失败哦,一个 char 只有两个字节,而一个 UTF8 字符编码,可能需要超过2个字节,
      

  11.   

    试试这样 int n = int.Parse("30E0", System.Globalization.NumberStyles.AllowHexSpecifier); // 转为整型,这样不会溢出了
            byte[] bytes = System.BitConverter.GetBytes(n); // 转为字节数组
            string str = System.Text.Encoding.UTF8.GetString(bytes); // 转为字符
      

  12.   

    是不是 UTF8 ?我用中文是可以的,
      

  13.   

    晕,  LZ 你的编码是 Unicode这下可以了int n = int.Parse("30E0", System.Globalization.NumberStyles.AllowHexSpecifier);
            byte[] bytes = BitConverter.GetBytes(n);
            string str = System.Text.Encoding.Unicode.GetString(bytes); // 输出 ム
      

  14.   

    刚刚开始研究编码,我也有点糊涂
    还有一个小小的问题,str后面正确的字符ム后边多了个/0的字符不知你注意到没有?
      

  15.   

    TOezhuyin(碧海蓝天) 
    嗯,/0似乎不影响啥
      

  16.   

    System.Text.Encoding.Default.GetString(bytes);
      

  17.   

    发现下面这组编码还是没法转换过来
    0080 €
    0081 &#129;
    0082 &#8218;
    0083 &#402;
    0084 &#8222;
    0085 …
    0086 &#8224;
    0087 &#8225;
    0088 &#710;
    0089 ‰
    008a &#352;
    008b &#8249;
    008c &#338;
    008d &#141;
    008e &#381;
    008f &#143;
    0090 &#144;
    0091 ‘
    0092 ’
    0093 “
    0094 ”
    0095 &#8226;
    0096 –
    0097 —
    0098 &#732;
    0099 &#8482;
    009a &#353;
    009b &#8250;
    009c &#339;
    009d &#157;
    009e &#382;
    009f &#376;
      

  18.   

    你把两列分别用代码调用相应的转化转换成byte,再判断是否相等,就可以了
      

  19.   

    比如0080转换后得到的字符是&#144;正在找有关资料,研究utf8转Unicode,挺头疼这个问题