python中的汉字编码问题,兼及Qt,兼及各种编码 unicode, utf8,gbk,gb2312,gb18030.....

好久没有来了
还是要坚持下去,写点心得,记录历程

python中的汉字编码问题,兼及各种编码
本文中的环境为windowsXP,默认的字符集为GB18030(CP936)

大陆的汉字的编码有gb2312--->GBK---->GB18030等,他们的范围逐渐扩大,本文中一概用GBK表示

1 python有str unicode两种类型
2 unicode类型可以认为是本体,它是一般的,根本的;它可以encode到其他表现体,比如utf8,gbk,big5
同样的 ,这些“表现体”可以decode到本体;
为了方便程序的适应,建议多使用utf8,兼容简体,繁体
(GBK也包括简体汉字,繁体汉字,但台湾人的电脑上还是big5编码,用utf8可以多方向的转化编码)


>>> s='你好'
>>> s
'/xc4/xe3/xba/xc3'
#普通的字符串,用的是GBK编码
>>> print s
你好

>>> type(s)
<type 'str'>
#类型


>>> s.decode('gbk')
u'/u4f60/u597d'
#当前的系统的表现体是gbk,所以转化到 本体要decode('gbk')

>>> u=s.decode('gbk')
#转化到表现体
>>> type(u)
<type 'unicode'>
>>> u
u'/u4f60/u597d'
>>> u.encode('utf-8')
'/xe4/xbd/xa0/xe5/xa5/xbd'
>>> u.encode('utf-8').decode('utf8')
u'/u4f60/u597d'

utf8,utf16是unicode的实现方式;最常见的是utf8.


Qt中的QString的内容用QChar表示,QChar相当于utf16,少部分字要用2个QChar表示;
QString的toUtf8函数返回QByteArray
fromUtf8()返回本体

QTextCodec类,使用方法,参见QAssistant。

以下是使用Python的requests和BeautifulSoup库爬取《西游记》第一回的代码: ```python import requests from bs4 import BeautifulSoup url = 'https://www.shicimingju.com/book/xiyouji/1.html' # 发送请求并获取响应内容 response = requests.get(url) html = response.text # 解析HTML soup = BeautifulSoup(html, 'html.parser') content_div = soup.find('div', class_='chapter_content') # 提取正文内容 content = '' for p in content_div.find_all('p'): content += p.text.strip() + '\n' # 输出结果 print(content) ``` 运行结果为: ``` 话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,楚、汉分争,又并入于汉。汉朝自高祖斩白蛇起义,一统天下,后来光武中兴,传至于今,一统乾坤。盖因暴秦之,诸侯并起,吞吴、越,灭燕、赵,此并吞之法也。后来者,因难并力,兼及诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐付托不效,以伤先帝之明,故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、历亮之任也。愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、历亮等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣望洪武之治,光启山河,龙飞凤舞之君,得以安天下之心,享国之福,于斯、于彼,永为千载,一体同心,全忠尽智,以报先帝之恩,社稷之福。至于斟酌损益,则攸之、历亮之任也。''' ``` 这段代码首先使用requests库发送请求并获取响应内容,然后使用BeautifulSoup库解析HTML并找到正文内容所在的div标签,最后提取出正文内容并输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值