解决\xa0 、 \u3000导致的编码问题_小龙在山东的博客
文章推薦指數: 80 %
解决\xa0 、 \u3000导致的编码问题_小龙在山东的博客-程序员宅基地 · codecs读文件 · codecs从UTF-8转换为GBK格式 · 使用编码器 · 为什么从unicode 转str 是encode,而反过来叫 ...
解决\xa0、\u3000导致的编码问题_小龙在山东的博客-程序员宅基地
技术标签: python
当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:
原有编码->内部编码(UNICODE)->目的编码
\xa0是不间断空白符
我们通常所用的空格是\x20,是在标准ASCII可见字符0x20~0x7e范围内。
而\xa0属于latin1(ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbsp(non-breakingspace)。
latin1字符集向下兼容ASCII(0x20~0x7e)。
通常我们见到的字符多数是latin1的,比如在MySQL数据库中。
这里也有一张简陋的Latin1字符集对照表。
\u3000是全角的空白符
根据Unicode编码标准及其基本多语言面的定义,\u3000属于CJK字符的CJK标点符号区块内,是空白字符之一。
它的名字是IdeographicSpace,有人译作表意字空格、象形字空格等。
顾名思义,就是全角的CJK空格。
它跟nbsp不一样,是可以被换行间断的。
常用于制造缩进,wiki还说用于抬头,但没见过。
这里还有一个Unicode.org上关于CJK标点符号块的字符代码表。
在读取文件的时候,可以让codecs来代劳。
codecs读文件
results.txt
两部委:到2020年底重点城市生活垃圾得到有效分类(图)
英雄惜英雄!传奇为格策叫冤:已尽力不应被批
中华关爱失能老兵和老人公益行活动启动仪式在京举行(组图)
国安酷暑作战满意拿分谢峰:上半场少补一次水
国内首家省级民营投资平台在无锡揭牌成立
5月外汇供求进一步趋向平衡跨境资金流出压力缓解
#-*-coding:UTF-8-*-
importcodecs
#第三个参数可以为r只读w只写a附加r+读写
cf=codecs.open("results.txt","r","UTF-8")
s=cf.read()
prints.encode("GBK",'ignore')
cf.close()
如果报以下错误:
UnicodeEncodeError:'gbk'codeccan'tencodecharacteru'\xa0'inposition659:illegalmultibytesequence
是因为Windowscmd默认是GBK(CP936)编码,有部分Unicde的字符无法编码为GBK,所以可以把这些字符替换为空格,或者忽略掉。
string.replace(u'\xa0',u'')
或
print"非法字符\xa0".encode("GBK",'ignore');
codecs从UTF-8转换为GBK格式
#-*-coding:UTF-8-*-
importsys
reload(sys)
#设置系统默认编码
sys.setdefaultencoding("gbk")
importcodecs
crf=codecs.open("results.txt","r","UTF-8")
s=crf.read()
crf.close()
cwf=codecs.open("out.txt","w","gbk")
printtype(s)
#把UTF-8编码的字符串转换为GBK编码,并忽略掉无法编码的字符。
cwf.write(s.encode("gbk",'ignore'))
cwf.flush()
cwf.close()
如果不加sys.setdefaultencoding("gbk")报错:
UnicodeDecodeError:'utf8'codeccan'tdecodebyte0xd6inposition2:invalidc
ontinuationbyte
sys.setdefaultencoding("gbk")是把系统默认编码方式设置为GBK。
使用编码器
#-*-coding:UTF-8-*-
importcodecs
#创建gb2312编码器
cgb=codecs.lookup("gb2312")
#创建utf-8编码器
#lookup函数返回一个包含四个元素的TUPLE
cutf8=codecs.lookup("utf-8")
printcutf8[0]
#
为什么从unicode转str是encode,而反过来叫decode?
因为Python认为16位的unicode才是字符的唯一内码,而大家常用的字符集如gb2312,gb18030/gbk,utf-8,以及ascii都是字符的二进制(字节)编码形式。
把字符从unicode转换成二进制编码,当然是要encode。
反过来,在Python中出现的str都是用字符集编码的ansi字符串。
Python本身并不知道str的编码,需要由开发者指定正确的字符集decode。
参考
http://blog.csdn.net/gooooa/article/details/72731429
https://www.crifan.com/tutorial_python_codecs_process_file_char_encoding/
http://blog.csdn.net/suofiya2008/article/details/5579413
http://in355hz.iteye.com/blog/1860787
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lilongsy/article/details/78288697
原作者删帖
不实内容删帖
广告或垃圾文章投诉
智能推荐
使用requests库和正则表达式爬取淘宝商品信息(入门版)最近在b站上学习python爬虫,根据老师的教程打了一遍,出现了一些问题,主要是因为淘宝的反扒机制,但在增加headers和cookie之后就没什么问题了。
可以参考这篇教程设置cookie:https://www.cnblogs.com/huahuayu/p/8207037.html附上源码:importrequests#...
ERROR[Druid-ConnectionPool-Create-159475521]-createconnectionSQLException,url:jdbc:mysql://localhost:3306/emp?serverTimezone=UTC,errorCode1045,state28000java.sql.SQLException:Accessdeniedforuser‘Fang’@‘localhost’(usingpassword:YES)经过查询
author:ZKe-------------------------------以下是一个txt文件,每行11个字段,第一个字段是日期,后面10个是用户id和对应今天发表微博数,所有字段用制表符'\t'分隔我们要对每一行数据,画一个柱状图,标题是日期,x轴是用户id,纵轴是发表微博数而且是批量的,写一个Matlab脚本,绘制并保存每个图1.首先要处理每一行数据,进行字符串切割,假设str是我们...
第三章通过Google官方的架构示例项目To-Do,详细介绍了Android的应用架构,包括MVP,MVP-Clean,MVP-Dagger,MVP-RxJava,MVVM-DataBinding,MVVM-Live。
第四章介绍了实战项目AndroidPlus,AndroidPlus是一个专注于Andriod领域的知识问答与分享平台,遵循MaterialDesign,使用了MVP-Dagger架构,提供Java版本和Kotlin版本的实现。
第五章介绍了Android开发中的一些实践,包括Androi
Oracle日期函数:MONTHS_BETWEEN:返回两个日期之间月份的差值MONTHS_BETWEEN('01-EP-95','11-JAN-94')===>19.6774194ADD_MONTHS:在日期上加上份数.ADD_MONTHS('11-JAN-94',6)===>'11-JUL-94'NEXT_DAY:指定
PalindromesubsequenceTimeLimit:2000/1000MS(Java/Others) MemoryLimit:131072/65535K(Java/Others)TotalSubmission(s):2610 AcceptedSubmission(s):1050ProblemDescriptionInmat
随便推点
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项) 1.一个32位整型变量占用( )个字节。
A.4B.8 C.32 D.128 A1字节=8位(1byte=8bit)2. 二进制数11.01在十进制下是( )。
A.3.25 B.4.125 C.6.2
一:在maven中配置相应的配置文件<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dep
functioninitCombobox(id,url){ varvalue=""; //加载下拉框复选框 $('#'+id).combobox({ url:url,//后台获取下拉框数据的url method:'post'
2017-10-09回答用matlab解方程的三个实例1、对于多项式p(x)=x3-6x2-72x-27,求多项式p(x)=0的根,可用多项式求根函数roots(p),其中p为多项式系数向量,即>>p=p=1.00-6.00-72.00-27.00p是多项式的matlab描述方法,我们可用poly2str(p,'x')函数,来显示多项式的形式:>>px=pol...
利用Arcgis制作图像分割数据集一,进行矢量化获取矢量数据一,进行矢量化获取矢量数据 如果已经获取到了矢量数据,可直接跳过此步骤。
由于本文是以制作用于进行遥感影像中农村道路提取的数据集无法从网络上获得矢量数据,所以自行获取矢量数据。
直接在arcmap中进行矢量化,生成shp文件,由于本文矢量化后的shp文件是线文件,道路是面,直接进行缓冲区分析构建道路的面文件。
...
linux安装包制作1、打包或压缩文件tar,zip,gz等,解压后即可,或者解压后运行sh文件;太简单。
。
。
感觉不正式2、使用管理工具的deb,rpm等,通常的这类安装文件可以通过第三方的命令行或UI来简单的安装,例如Ubuntu中的apt来安装deb,Redhat中的yum来安装rpm;制作起来比较复查,还不通用。
3、像.bin类,把shell和压缩包合成一个文件,可以直接在linux
推荐文章
Android应用退到后台,点击悬浮窗返回应用_慢慢_飞的博客-程序员宅基地_android退到后台
Mybatis框架学习(二)—DAO开发方式和Mapper代理的开发方式_愚人节第二天的博客-程序员宅基地
linux8182错误,运行lampp时报错,错误信息如下,求解决方案_范汝诗的博客-程序员宅基地
shop--10.商品--商品添加(前端)及问题的解决_Claire_ljy的博客-程序员宅基地
POIExcel上下标、下划线、粗体、斜体标签处理(sup、sub、u、strong、em的HTML标签转化到excel格式)②_127.0.0.1:8080的博客-程序员宅基地
OpenGLES3.0纹理格式介绍及有效的内部格式、格式、类型组合_阿飞__的博客-程序员宅基地
联想android6.0升级名单,摩托罗拉公布安卓6.0升级名单_九罭之魚的博客-程序员宅基地
AltiumDesigner画图不求人20批量修改器件的封装_电子芯的博客-程序员宅基地
热门文章
计算机病毒中的后门病毒,国家计算机病毒中心发现恶意后门程序新变种_Daydayydayyy的博客-程序员宅基地
Python基础之字典_测试小白猪的博客-程序员宅基地
stm32串口屏应用----SIM900A(上)_冷瑾瑜的博客-程序员宅基地
Java中通过实例得到实体类中的属性和方法_天马踢踏的博客-程序员宅基地
Windows下配置Apache2.2+PHP5+MySQL5,以及对Perl支持_happmaoo的博客-程序员宅基地
在Apache上http强制跳转到https无效的解决办法_左边的天堂的博客-程序员宅基地
视频目标检测paper(二)《SequenceLevelSemanticsAggregationforVideoObjectDetection》_linlinsss的博客-程序员宅基地_视频目标识别
Fedora30/CentOS7linux运行级别_Matrix-bystander的博客-程序员宅基地
相关标签
python
延伸文章資訊
- 1解决\xa0 、 \u3000导致的编码问题 - CSDN博客
print "非法字符\xa0".encode("GBK", 'ignore');. 1. codecs从UTF-8转换为GBK格式. #-*- coding: UTF- ...
- 2解决\xa0 、 \u3000导致的编码问题_小龙在山东的博客
解决\xa0 、 \u3000导致的编码问题_小龙在山东的博客-程序员宅基地 · codecs读文件 · codecs从UTF-8转换为GBK格式 · 使用编码器 · 为什么从unicode 转...
- 3python3: how to convert "\u3000" (ideographic space) to " "?
txt', 'r', encoding='utf-8') as f: old = [line.strip() for line in f.readlines()] send_mail(from,...
- 4“ ” U+3000 Ideographic Space Unicode Character - Compart
U+3000 is the unicode hex value of the character Ideographic Space. Char U+3000, Encodings, HTML ...
- 5特殊字元:\ufeff、\xa0、\u3000 處理方法 - me前沿
\ufeff 位元組順序标記. 去掉\ufeff,隻需改一下編碼就行,把UTF-8編碼改成UTF-8-sig. with open(file_path, mode='r', encoding='...