首页 > 编程语言 >Python:中文域名的编码处理

Python:中文域名的编码处理

时间:2023-06-27 12:03:43浏览次数:43  
标签:baidu 编码 xn Python hostname print 域名 encode --

中文域名 通过 https://whois.aliyun.com/domain/百度.中国 域名信息查询(WHOIS)结果如下

Domain Name: 百度.中国
Puny Name: xn--wxtr44c.xn--fiqs8s

中文域名处理

print('中国'.encode('punycode')) 
# b'fiqs8s'

print('百度.中国'.encode('punycode')) 
# b'.-lq6ay5zb9h854a'

print('百度.中国'.encode('idna')) 
# b'xn--wxtr44c.xn--fiqs8s'

英文域名处理

print('www.baidu.com'.encode('idna')) 
# b'www.baidu.com'

print('www.baidu.com'.encode('punycode')) 
# b'www.baidu.com-'

查看Python ssl模块的源码

class SSLContext(_SSLContext):
    def _encode_hostname(self, hostname):
        if hostname is None:
            return None
        elif isinstance(hostname, str):
            return hostname.encode('idna').decode('ascii')
        else:
            return hostname.decode('ascii')

里边有一个_encode_hostname 函数,处理域名编码


def encode_hostname(hostname):
    if hostname is None:
        return None

    elif isinstance(hostname, str):
        return hostname.encode('idna').decode('ascii')
    else:
        return hostname.decode('ascii')

if __name__ == '__main__':
    print(encode_hostname('www.baidu.com'))
    # www.baidu.com

    print(encode_hostname('baidu.中国'))
    # baidu.xn--fiqs8s

    print(encode_hostname('百度.中国'))
    # xn--wxtr44c.xn--fiqs8s

可以看到,处理结果是我们想要的

标签:baidu,编码,xn,Python,hostname,print,域名,encode,--
From: https://blog.51cto.com/mouday/6561954

相关文章

  • 【AGC】云数据库云侧Python SDK集成使用方法
    使用场景云数据库服务端以前支持Node.JS和Java平台的ServerSDK。现在介绍一下服务端为Python平台时的使用方法。集成准备Python环境配置1.下载Python和PyCharm并安装。2.使用安装的python本身作为解释器。3.安装AGCPythonSDK。AGC环境配置1.在AGC创建项目和应用2.开通云数据库服......
  • python-docx - 3
    1.添加图片函数:add_picture(图片文件,width=宽,height=高)如果只指定一个宽或高,则按比例缩放。1.1文档直接添加图片fromdocximportDocumentfromdocx.sharedimportCmdoc=Document()doc.add_picture("images/2.jpg",width=Cm(8))doc.save("1.docx")1.2段落......
  • python批量安装第三方库
    把需要安装的库名和版本号(版本号可写)写入txt文件: 终端输入pip安装命令,等待安装完成即可:pipinstall-rrequirements.txt-i......
  • ubuntu搭建python3.10.7(服务器第一步)
    一安装python更新Ubuntu软件源和依赖(建议操作)1-sudoaptupdate2-sudoaptinstallbuild-essentialzlib1g-devlibncurses5-devlibgdbm-devlibnss3-devlibssl-devlibreadline-devlibffi-dev3-下载安装包:wgethttps://www.python.org/ftp/python/3.10.7/Python-3.10.7......
  • python 批量删除 redis 大量数据
    #!/usr/bin/envpython#ScananddeletekeysinRedis.#Author:cdfivefromredisimportRedisimporttimedefRedisScanAndDelete(host,port,password,db,cursor,pattern,count,batch_delete_size):start_time=time.time()client=Redis(host......
  • python:一行代码读写文件
    1、读取文件lst=[line.strip()forlineinopen('data.txt')]print(lst)这里我们使用列表来处理。首先,我们打开一个文本文件,并使用for循环,逐行读取。最后,使用strip删除所有不必要的空间。通过使用列表功能,使得代码更简单,更短。list(open('data.txt'))##Usingwithwi......
  • 在pod内,如何通过curl命令来解析一个域名的地址?
    最近在测试kubernetes的这个apiserver的域名解析出来的地址,到底是多少,然后呢,就进入到一个容器里面,发现没有ping、nslookup、host、dig、nc、wget命令 如何知道这个service名字是解析到了什么呢? 因为在pod内,使用coredns解析,就是解析service的名字 后来查了以下,可以通过c......
  • 前端字符编码
    在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111 ......
  • Python -Flask HTML <img 显示本地图片失败,怎么破?
    大家好,我是皮皮。一、前言前几天在Python白银群【膨】问了一个Flask图片显示的问题,这里拿出来给大家分享下。运行之后图片加载不出来。二、实现过程这里【此类生物】给了一个思路,flask运行当前路径是主程序路径,把图片路径改成绝对路径。结果页面还是加载不出来。后来以......
  • 如何利用python做爬虫?
    Python爬虫在许多情况下是非常有用的,爬虫可以帮助自动化地从互联网上获取大量数据。这些数据可以是产品信息、新闻文章、社交媒体内容、股票数据等通过爬虫可以减少人工收集和整理数据的工作量,提高效率。在软件开发中,可以使用爬虫来进行自动化的功能测试、性能测试或页面链接检查......