免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8897 | 回复: 11
打印 上一主题 下一主题

[C] linux c/c++ 字符串含中文的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-06 21:33 |只看该作者 |倒序浏览
大家好,请教大家一个问题,就是怎样确定一个字符串的编码,注意不是文件的,就是一个字符串。

是这样的,我从网络上收到一个数据包(通常是浏览器发过来的),其中有可能包含中文,
这样在处理时便会出问题,现在是要把网络上来的数据都转成utf-8编码。

所以请问对大家,有什么方法可以较快的确认一个字符串(就是网络上的数据包)的编码方式吗?

因为只有知道了字符串的编码方式,才能有效的对其进行 utf-8 编码,谢谢。。

环境为linux ,语言 C/C++

谢谢!

论坛徽章:
0
2 [报告]
发表于 2011-04-06 22:30 |只看该作者
网上找到一些资料,先摆这,明天再研究了,大家有什么想法就说一下

以下来源:http://topic.csdn.net/u/20090204 ... a-42e211015e12.html 96楼。

查了一下,找到了这个猜字符编码的算法代码,叫chartdet 它是mozilla firefox使用的自动字符集探测算法

这个算法的最初作者是frank Tang,C++源代码在http://lxr.mozilla.org/mozilla/source/intl/chardet/,可以从http://www.mozilla.org/projects/intl/chardet.html得到更多关于这个算法的信息。


jchardet是mozilla自动字符集探测算法代码的java移植,其源代码可以从sourceforge下载

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
3 [报告]
发表于 2011-04-06 23:43 |只看该作者
本帖最后由 nketc 于 2011-04-06 23:45 编辑

icu 里面也有猜测编码的方法。

浏览器传过来的话,html标签里有啊,lz干嘛不用?

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
4 [报告]
发表于 2011-04-07 08:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2011-04-07 14:09 |只看该作者
icu 里面也有猜测编码的方法。

浏览器传过来的话,html标签里有啊,lz干嘛不用?
nketc 发表于 2011-04-06 23:43


谢谢,浏览器里有吗?
accept-encoding字段?这个字段有时候是 */*   ,没法用吧?

论坛徽章:
0
6 [报告]
发表于 2011-04-07 14:10 |只看该作者
本帖最后由 FightForWin 于 2011-04-07 14:14 编辑
用libconv
如果已经是utf-8编码,再转是不会变的,然后比较2个字符串是否相当。
c/unix 发表于 2011-04-07 08:45



    谢谢,我查了一下,libconv是用于已知原字符串编码的转换,但我现在关键是不知道源字符串的编码,这样也就无法确认调用哪个编码转换函数。
有这方面的经验不?请指教一下。
谢谢。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
7 [报告]
发表于 2011-04-07 15:59 |只看该作者
可以采用假设测试算法:先假设一种算法然后将一段内容转换为unicode,然后再转换回,比较结果与原来的编码,如果相同,则假设成立。如果选取的内容为全部,则可以保证100%正确,但是部分选取则可能假设失败。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
8 [报告]
发表于 2011-04-07 17:26 |只看该作者
猜測

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
9 [报告]
发表于 2011-04-07 17:54 |只看该作者
回复 5# FightForWin


    <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
是html吗?这个标签里有。

论坛徽章:
0
10 [报告]
发表于 2011-04-07 19:22 |只看该作者
回复  FightForWin


   
是html吗?这个标签里有。
nketc 发表于 2011-04-07 17:54



    你好,非常感谢。
但这种形式的包好像只存在于服务器的应答包里,客户发出的请求包并不包含这些数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP