在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信息了
阅读(1058) | 评论(0) | 转发(0) |