python基础:字符编码问题三个不可见的字符(0xEF 0xBB 0xBF,即BOM)

一、用utf-8格式保存的txt文件等,如何去掉BOM头

Windows系统的txt文件在使用utf-8编码保存时会默认在文件开头插入三个不可见的字符(0xEF 0xBB 0xBF)称为BOM头,这个BOM头在python的codecs库中已经定义为常量(codecs.BOM_UTF8)

方法一:utf8temp.txt保存时选择utf-8保存

1 import codecs
2 data=open("utf8temp.txt",‘r‘,encoding=‘utf-8‘).read()
3 data=data.encode(encoding=‘utf-8‘)
4 print(data)
5 #print("中文".encode(encoding=‘utf-8‘))
6 print(len(data))
7 if data[:3]==codecs.BOM_UTF8:
8     data=data[3:]
9     print(data.decode(encoding=‘utf-8‘))

输出如下:

b‘\xef\xbb\xbf\xe4\xb8\xad\xe6\x96\x87‘
9
中文

方法二:

1 with open("./temp.txt","r",encoding=‘utf-8‘) as f:
2     flag=1
3     for line in f:
4         if flag==1:
5              line=line[1:]#去掉txt格式为utf-8会在文件第一行开头插入
6                           # 三个不可见的字符(0xEF 0xBB 0xBF)--(‘.’)
7              flag=0
8         print(line)

方法三:直接用第三方软件去掉BOM头,用notepad++打开txt文件,选择编码...without BOM,点击保存

时间: 2024-08-27 02:02:01

python基础:字符编码问题三个不可见的字符(0xEF 0xBB 0xBF,即BOM)的相关文章

python基础之编码问题

python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode--->utf-8(utf-16和utf-32等)演变过来的,再加上类似于中国的gbk编码等,这些编码互相之间并不兼容,所以编写的软件实现跨语言平台运行就会出现字符乱码问题... 须知内容如下: 在python2默认编码是ASCII, python3里默认是utf-8(文件编码默认是utf-8,字符串编码默认是unicode) unicode

MySQL基础配置之mysql的默认字符编码的设置(my.ini设置字符编码) (转)

MySQL基础配置之mysql的默认字符编码的设置(my.ini设置字符编码) MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以设置UTF-8为例来说明. MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以UTF-8为例来说明 需要注意的是,要修改的地方非常多,相应的修改方法也很多.下面是一种最简单最彻底的方法: 一.Windows系统下面 1.中止MySQL服务 2.在MySQL的安装目录下找到my.ini,如果

Python基础教程(第三版)(六) 抽象

一个菜鸡的挣扎 就总结下 and 如果有大佬不小心看到了发现了错误,就欢迎指正 6.1懒惰是一种美德 通过创建函数以调用之可以减少代码量 6.2 抽象和结构 抽象是程序能够被人理解的关键所在(无论对编写程序还是阅读来说,这都至关重要) 函数封装了人不需要关心的实现细节,从而更容易被使用和理解 6.3 自定义函数 6.3.1 给函数编写文档 在def后面添加字符串,相当于给整个函数添加注释,以确保被人理解 __doc_ _是函数的一个属性,可用它来访问函数的文档字符串 我自己的练习: def la

python之字符编码(三)

一.字符编码的分类: 计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系.最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号 当然我们编程语言都用英文没问题,ASCII够用,但是在处理数据时,不同的国家有不同的语言,日本人会在自己的程序中加入日文,中国人会加入中文. 而要表示中文,单拿一个字节表表示一个汉子,是不可能表达完的(连小学生都认识两千多个汉字),解决方法只有一个,就是一个字节用>

python基础篇【第三篇】:函数、文件操作

一.函数 什么是函数? 函数是可以实现一些特定功能的小方法或是小程序.在Python中有很多内建函数如:(print()),当然随着学习的深入,也可以学会创建对自己有用的函数.简单的理解下函数的概念,就是你编写了一些语句,为了方便使用这些语句,把这些语句组合在一起,给它起一个名字.使用的时候只要调用这个名字,就可以实现语句组的功能了,自己创建的函数就叫做自定义函数. 函数的特点:可重复使用的,用来实现单一,增强代码的重用性和可读性 定义函数 你可以定义一个由自己想要功能的函数,以下是简单的规则:

Python基础学习笔记(三)运算符

参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 ? 运算符 ▼// 整除 ▼ ** 幂次 ▼ !=和<> 不等于 ▼逻辑运算符:and与 or或 not非 ▼ 成员运算符:① in 如果在指定序列

Python基础学习笔记(三)

python 基础笔记之寻求帮助 1.寻求帮助 python中的帮助文档和shell中的一样,也是相当丰富的,可以使用 help(object) 来查看帮助,其中object 是你要查找帮助的对象,比如,查看dir的功能,可以用 >>> help(dir) 2.查看python中的内置函数.内置类,及其他内置对象 >>> dir(__builtins__) 3.查看对象自身的类型或者是函数作用的参数类型 1)查看对象自身的类型:在python交互式shell中直接输入

【Python】python基础语法 编码

编码 默认情况下,python以UTF-8编码,所有的字符串都是Unicode字符串,可以为代码定义不同的的编码. #coding:UTF-8 #OR #-*- coding:UTF-8 -*-  python保留字 保留字及为关键字,不能作为任何标识符名称.查看当前版本所有关键字:keyword模块 1 import keyword #导入keyword模块 2 keyword.kwlist['False', 'None', 'True', 'and', 'as', 'assert', 'br

采用霍夫曼编码(Huffman)画出字符串各字符编码的过程并求出各字符编码 --多媒体技术与应用

题目:有一个字符串:cabcedeacacdeddaaaba,问题: (1)采用霍夫曼编码画出编码的过程,并写出各字符的编码 (2)根据求得的编码,求得各编码需要的总位数 (3)求出整个字符串总编码长度,并计算出字符串位数在编码前与编码后的比值 解答: (1)各字符出现频率统计如下表所示. |符号 |出现次数 |出现频率| |--|--|--| | a |7|0.35| |b|2|0.1| |c|4|0.2| |d|4|0.2| |e|3|0.15| 编码过程如下图所示: 各字符编码如下表所示: