再问UTF8,知道U8的编码,怎么得到它对应的字符?

sesea 2007-08-01 11:47:35
有这样一张表,想通过前面的U8代码得到字符,与第二列对比防止错误,有啥好办法没?
30E0 ム
30E1 メ
30E2 モ
30E3 ャ
30E5 ュ
30E6 ユ
30E7 ョ
30E8 ヨ
30E9 ラ
30EA リ
30EB ル
30EC レ
30ED ロ
30EF ワ
30F3 ン
...全文
815 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sesea 2007-08-02
  • 打赏
  • 举报
回复
比如0080转换后得到的字符是

正在找有关资料,研究utf8转Unicode,挺头疼这个问题
leixueqiyi 2007-08-02
  • 打赏
  • 举报
回复
你把两列分别用代码调用相应的转化转换成byte,再判断是否相等,就可以了
sesea 2007-08-02
  • 打赏
  • 举报
回复
发现下面这组编码还是没法转换过来
0080 €
0081 
0082 ‚
0083 ƒ
0084 „
0085 …
0086 †
0087 ‡
0088 ˆ
0089 ‰
008a Š
008b ‹
008c Œ
008d 
008e Ž
008f 
0090 
0091 ‘
0092 ’
0093 “
0094 ”
0095 •
0096 –
0097 —
0098 ˜
0099 ™
009a š
009b ›
009c œ
009d 
009e ž
009f Ÿ
zhchg6666 2007-08-01
  • 打赏
  • 举报
回复
//将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());
}
MicroSoftor 2007-08-01
  • 打赏
  • 举报
回复
转成Char型
char ch = '\u30E0';
MessageBox.Show(ch.ToString());
commandosvvv 2007-08-01
  • 打赏
  • 举报
回复
直接定义!~
char c='\u30E0' //ム
这是unicode 码! 相信你是从windows 文字code表里找的!~
呵呵!~~
ezhuyin 2007-08-01
  • 打赏
  • 举报
回复
UTF8Encoding e = new UTF8Encoding();
e.GetString(你要转化的byte[]); //这个用来解码,返回一个string
e.GetByte(string s); // 这个用来编码,返回byte[]
zhaoxiaoyang5156 2007-08-01
  • 打赏
  • 举报
回复
幫顶
朋友 有空就看看这个问题。沒空就算了,謝過了.http://community.csdn.net/Expert/topic/5686/5686047.xml?temp=.8212702
tddw 2007-08-01
  • 打赏
  • 举报
回复
System.Text.Encoding.Default.GetString(bytes);
sesea 2007-08-01
  • 打赏
  • 举报
回复
TOezhuyin(碧海蓝天)
嗯,/0似乎不影响啥
ezhuyin 2007-08-01
  • 打赏
  • 举报
回复
/0似乎是表示string的结束。
sesea 2007-08-01
  • 打赏
  • 举报
回复
刚刚开始研究编码,我也有点糊涂
还有一个小小的问题,str后面正确的字符ム后边多了个/0的字符不知你注意到没有?
Jinglecat 2007-08-01
  • 打赏
  • 举报
回复
晕,

LZ 你的编码是 Unicode

这下可以了

int n = int.Parse("30E0", System.Globalization.NumberStyles.AllowHexSpecifier);
byte[] bytes = BitConverter.GetBytes(n);
string str = System.Text.Encoding.Unicode.GetString(bytes); // 输出 ム
Jinglecat 2007-08-01
  • 打赏
  • 举报
回复
是不是 UTF8 ?我用中文是可以的,
sesea 2007-08-01
  • 打赏
  • 举报
回复
结果不是我想要的字符
谢谢了
Jinglecat 2007-08-01
  • 打赏
  • 举报
回复
试试这样

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

sesea 2007-08-01
  • 打赏
  • 举报
回复
那还有啥方法不?
或者给点例子我研究研究,搜索了好多,收获很小
Jinglecat 2007-08-01
  • 打赏
  • 举报
回复
sorry, 对于 char ch = (char)byte.Parse("0x" + dr[1].ToString()); 前导 0x 似乎无法解析

LZ 若准备使用将 UTF8 转换为 char,对于日文字符可能会失败哦,一个 char 只有两个字节,而一个 UTF8 字符编码,可能需要超过2个字节,

sesea 2007-08-01
  • 打赏
  • 举报
回复
我是想从EXCEL表中导入数据库,EXCEL表中有编码和字符,为了保证字符的准确性准备通过编码获得字符。
Jinglecat(晓风残月 >> 问题需简洁,错误要详细):你的方法不行啊,提示输入string格式不对(Input string was not in a correct format.)
xwk789xwk 2007-08-01
  • 打赏
  • 举报
回复
不懂,帮顶
加载更多回复(3)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧