如果判断一个字符串是UTF-8编码还是本地字符集编码

wtogether 2006-11-17 11:34:33
在网上找的UTF资料是这样的
根据首字节判断长度
0x00-0x7F 1字节
0xC0-0xDF 2字节
0xE0-0xEF 3字节
0xF0-0xF7 4字节
0xF8-0xFB 5字节
0xFC-0xFD 6字节
随字节的范围是0x80-0xBF

但是“食品”这两个字的GB2312编码完全符合UTF-8的2字节规范,它的HEX值是:
0xCA 0xB3 0xC6 0xB7
刚好0xCA和0xC6都在[0xC0-0xDF]范围里,而且0xB3和0xB7也符合[0x80-0xBF]的跟随字节范围,这就造成判断不准确了,请问还有更准确的判断方法么?
...全文
6254 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtogether 2006-11-19
  • 打赏
  • 举报
回复
看来只有这样了,取值的时候自己设置编码,感谢大家的回复
liuchangyan 2006-11-18
  • 打赏
  • 举报
回复
mark
wtogether 2006-11-17
  • 打赏
  • 举报
回复
楼上说的也是,但是实际应用中没办法,这个bug还是刚发现的,本来改了一下程序,只判断1字节和3字节的UTF-8,其余字节当作本地字符集处理,但是测试了一下还是不行,有某些特殊字符存在的情况下,就会出错,例如符号[·]的UTF-8串是0xC2 0xB7
飞哥 2006-11-17
  • 打赏
  • 举报
回复
好,今天我在这等答案了
^_^
  • 打赏
  • 举报
回复
如果只有几个字当然不好判断了,多判断几次字应该就没问题了
飞哥 2006-11-17
  • 打赏
  • 举报
回复
糊涂了,不是双字节编码吗?
怎么搞那么多字节了?
lei001 2006-11-17
  • 打赏
  • 举报
回复
如果没有告诉它是什么编码,那么它就什么也不是的或者什么都是。
danjiewu 2006-11-17
  • 打赏
  • 举报
回复
如果能知道,就不会有那么多乱码了。
wtogether 2006-11-17
  • 打赏
  • 举报
回复
to jixingzhong(瞌睡虫·星辰)
汉字"食"的GB2312编码是:11001010 10110011
如果按照Unicode和UTF-8规范,不就是
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
那么11001010 10110011是GB2312还是UTF-8?
现在需要的就是一个判断未知编码的字符串(只有GB2312和UTF-8两种编码方式)到底是GB2312还是UTF-8
myfriend023 2006-11-17
  • 打赏
  • 举报
回复
我也需要这东西
mLee79 2006-11-17
  • 打赏
  • 举报
回复
我知道, 你存成文件再看三 ...
  • 打赏
  • 举报
回复
to mLee79
这里看到的都是ascii

69,387

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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