最近遇到一个需求,关于DNS方面的,由于中文域名采用punycode编码,因此需要将程序中使用gbk的域名转为punycode
但是。。。c++的libidn库用起来相比python一句代码转化实在是太恶心了。。。
首先安装python-dev
sudo apt-get install python-dev
先看python端的写法,如果只需要看c++如何调用python的可以直接跳过
gbk转punycode只需要一行代码就可以,utf-8同理,把gbk换成utf-8即可
string.decode('gbk').encode('punycode')
但这离需求还是有点远,punycode编码有点不同,例如“中国”,将“中国”两个字直接转punycode和将两个字分开转得到的punycode结果是不一样的
中文域名中往往是中英都有的,因此python代码如下 punycode.py
def gbk_to_punycode(string):
string = string.decode("gbk")
new_string = str()
substring = str()
for w in strin