Python写UTF8文件,UE、记事本打开依然乱码的问题
现象:使用codecs打开文件,写入UTF-8文本,正常无错误。用vim打开正常,但记事本、UE等打开乱码。
原因:一般写文本时,默认是没有BOM头的,即编辑器不知道这个文本文件是神马编码,只能智能detect,这个detect有的弱有的强,比如UE、记事本就挂了,认为是ASCII格式的,于是就乱码了。
解决方法:如果为了编辑器打开正常,可以加入BOM编码。但一定要慎重,一旦加入后,头部会增加2~3个字节,如果程序再读取,显然会出错。这个如果使用UE编辑过PHP代码抓过狂的都应该懂得,NOBOM哦亲~
1
2
3
4
|
fp_out = codecs. open (fn_out, "w" , "utf-8" )
fp_out.write(codecs.BOM_UTF8.decode( "utf-8" ))
.... fp_out.close() |
注意上述codecs.BOM_UTF是个常量,Python中预定义的还有:
01
02
03
04
05
06
07
08
09
10
|
codecs.BOM codecs.BOM_BE codecs.BOM_LE codecs.BOM_UTF8 codecs.BOM_UTF16 codecs.BOM_UTF16_BE codecs.BOM_UTF16_LE codecs.BOM_UTF32 codecs.BOM_UTF32_BE codecs.BOM_UTF32_LE |
Python写UTF8文件,UE、记事本打开依然乱码的问题的更多相关文章
-
C#写UTF8文件时指定是否含BOM头
BOM的基本概念 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符,所以不应该出现在实 ...
-
python写xml文件
为了便于后续的读取处理,这里就将信息保存在xml文件中,想到得到的文件如下: 1 <?xml version="1.0" encoding="utf-8" ...
-
Python中open文件的各种打开模式
对于Python打开文件的模式,总是记不住,这次在博客里记录一下 r+: Open for reading and writing. The stream is positioned at th ...
-
python 读取utf8文件
有时候默认是gbk编码,但是要读取utf8文件,所以会出现decode 错误. 使用codecs模块: import codecs file = codecs.open('filename','r', ...
-
下载的js文件本地编辑器打开中文乱码如何解决
今天遇到的小问题,已解决,直接上图 下载直接打开是这样的 用记事本打开 另存为utf-8格式 正常了!
-
python写txt文件
with open('data.txt','w') as f: #设置文件对象 w是重新写,原来的会被抹掉,a+是在原来的基础上写 str0=u"写文件\n" #写中文要在字符串签 ...
-
用python写测试数据文件
f是指向文件的指针,r是转义字符,可以让字符串中的\保持不被转义.路径点属性查然后加上当前文件. 'w'表示只写,‘r’表示只读. import random 导入random数 s = []开一个空 ...
-
python 写csv文件
一.只有一列内容: def create_file(self, a, b): # 上传csv 文件 # os.remove('openfile.csv') open_file = open('5000 ...
-
python写csv文件
name=['lucy','jacky','eric','man','san'] place=['chongqing','guangzhou','beijing','shanghai','shenzh ...
随机推荐
-
第二章 Python基本元素:数字、字符串和变量
Python有哪些内置的数据类型: True False #布尔型 42 100000000 #整型 3.14159 1.0e8 #浮点型 abcdes #字符串 2.1 变量.名字和对象 pytho ...
-
bubble_sort
冒泡排序法: #include <iostream> #include <algorithm> using namespace std; int main(){ int n; ...
-
Zend Cache的学习和实例
前一段时间,公司让我组织一下关于Zend Cache的培训. 培训的具体内容有: 前端core缓存 前端Output缓存 前端Function缓存 前端Class缓存 前端File缓存 前端Page缓 ...
-
OC 代码规范
我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此. 主要参考规范: 1. Google Objective-C Sty ...
-
ssh: connect to host github.com port 22: Connection refused
假设git例如,下面的问题时,远程推送: [fulinux@ubuntu learngit]$ git push -u origin master ssh: connect to host githu ...
-
Java并发编程有多难?这几个核心技术你掌握了吗?
本文主要内容索引 1.Java线程 2.线程模型 3.Java线程池 4.Future(各种Future) 5.Fork/Join框架 6.volatile 7.CAS(原子操作) 8.AQS(并发同 ...
-
Javascrip 入门第三节课
一.location对象 location.href 获取当前网页的URLlocation.search() 获取?之后的请求信息 location.href="URL" // 跳 ...
-
vue之生命周期函数例子
执行代码看生命周期函数的执行顺序 <!-- 根组件 --> <!-- vue的模板内,所有内容要被一个根节点包含起来 App.vue --> <template> ...
- cocos dos命令
-
自动化运维之PSSH
1.PSSH简介 PSSH提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用. pssh是py ...