Chinaunix首页 | 论坛 | 博客
  • 博客访问: 994058
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-11-14 12:26:33

    在filezilla里,我们使用了libidn库
    filezilla里的wxString是各个wxWidgets库里个模块功能所使用的字符串表示方法阿,里面应该存放的都是UNICODE编码的字符。
    libidn目的在于方便使用不同字符集的各种域名能够相互兼容使用。
    filezilla的做法:
    1. 将本地编码的域名存入wxString得到了unicode编码的域名
    2. 由于此unicode编码的wxString应该是ucs-2,即采用了双字节的编码,而且存在0字节。因此不能使用一些只支持单字节编码串处理的函数对 其处理。因此将其转换成utf-8,utf-8的优点是8字节编码,当然有些字符占多个字节,但是在字符串结束之前没有0字节。因此可以用只支持单字节编 码的函数对其处理。
    3. 调用libidn的函数:idna_to_ascii_8z将utf-8编码的域名转换为ascii编码的表示。
    4. 将得到的ascii编码的域名以unicode格式存储在wxString变量中,方便wxWidget应用的使用。
    5. 在真正开始连接网络的时候,将wxString中的编量以multibyte的格式取出,得到的还是当初idna_to_ascii_8z得到的8bit编码的字符串。使用它就可以了。
    6. 调用getaddrbyname就可以根据name得到addr信息了

阅读(1078) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~