python保存utf8
⑴ python 怎样创建utf-8的文件
py2.7,需要调用codecs模块来进行设置
#coding:utf-8
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
importtraceback
importos
#含有中文时,最好用codecs打开
importcodecs
filepath=os.getcwd()+'/testfile.txt'
try:
withcodecs.open(filepath,'w+','utf-8')asf:
seq=[
'heheheheheheheheheheheh',
'hohohohohohohohohohohoho',
'hahahahahahahahahaha',
'这里又是哪里 ']
f.write("******************** ")
f.writelines(seq)
withcodecs.open(filepath,'r','utf-8')asf:
foriinf.readlines():
printi
exceptException,e:
traceback.print_exc()
print"执行文件时报错:"+str(e)
py3.6的open函数已经扩展了,可以直接设置encoding
#coding:utf-8
importtraceback
importos
filepath=os.getcwd()+'/testfile.txt'
try:
withopen(filepath,'w+',encoding='utf-8')asf:
seq=[
'heheheheheheheheheheheh',
'hohohohohohohohohohohoho',
'hahahahahahahahahaha',
'这里又是哪里 ']
f.write("******************** ")
f.writelines(seq)
withopen(filepath,'r',encoding='utf-8')asf:
foriinf.readlines():
print(i)
exceptException:
traceback.print_exc()
print("执行文件时报错")
⑵ sublime 怎么修改python 存储为utf-8
1. 汉化 sublime
[
搜索liblime汉化,下载解压得到default文件夹
将default文件夹放入 sublime/Data/Packages 中,汉化完成
]
2. 安装 Package Control 插件
[
方法1. 查看——显示控制台——粘贴代码(网上搜到代码)
方法2. sublime/Data/Packages文件夹中放入另一个文件夹(网络上可以搜索到文件夹)
]
3. 安装ConvertToUTF8,使得python代码中的中文能够正确显示
[
保证网络畅通
按下“ ctrl + shift + P ”(或者菜单栏:工具——命令面板)调出命令面板
命令面板中输入“install”,按下“Enter”
在新出现的窗口中输入ConvertToUTF8 ,按下“Enter”即可完成安装
]
4. 安装SublimeREPL
[
保证网络畅通
按下“ ctrl + shift + P ”(或者菜单栏:工具——命令面板)调出命令面板
命令面板中输入“install”,按下“Enter”
在新出现的窗口中输入SublimeREPL ,按下“Enter”即可完成安装
]
5. 配置SublimeREPL(这一步骤可省略,看文末介绍)
[
打开文件sublime/Data/packages/SublimeREPL/config/python/Main.sublime-menu文件
查找到
{"command": "repl_open",
"caption": "Python",
"id": "repl_python",
"mnemonic": "p",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python", "-i", "-u"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
},
把它复制并列粘贴在原位置下面,稍稍修改刚刚粘贴的部分
{"command": "repl_open",
"caption": "Python",
"id": "repl_python",
"mnemonic": "p",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python", "-i", "-u"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
},
{"command": "repl_open",
"caption": "Python - my", (我取名python-my,这里你自己取一个名字,显示在菜单栏中)
"id": "repl_myf5", (我取id为 repl_myf5, 你自己取一个独一无二的)
"mnemonic": "p",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python", "-i", "-u","$file_basename"], (这里修改添加了一点字段)
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
},
保存,至此在菜单栏 工具——SublimeREPL——python中就出现了python-my选项
]
6. 添加源文档中的字段
[
打开一个python源文档,在文档头添加字段 # -*- coding: utf-8 -*- (没有这个字段编译会出错,python编码和sublime不同)
选择工具——SublimeREPL——python——python-my(我取的名字), 即可编译
]
7. 设置快捷键
[
用工具菜单调用编译太慢,可以设置快捷键
选择菜单preferences——键绑定-用户,在打开的文件中输入
[ { "keys": ["f5"], (f5是我设置的快捷键,可以改,当然还是推荐f5)
"caption": "SublimeREPL: Python",
"command": "run_existing_window_command","args":
{
"id": "repl_myf5", (repl_myf5是我取的id,你填入你的id)
"file":"config/python/Main.sublime-menu"
}
}
]
上面内容包括方括号,保存后,即可使用设定的快捷键
]
8. 要注意的是,调试程序,使用快捷键编译时候,首先 ctrl + s 保存当前文件,编译的才是最新修改的源文件
(要是谁会在快捷键里面添加 先保存 再编译 功能请告诉我一下,我不太会配置快捷键,thankyou,发送邮件[email protected])
建议 查看——布局——列2 ,2列布局看起来更方便,多编译几次右边会出现很多编译窗口,关闭编译窗口 使用ctrl + w 可以快速关闭
9
文末的话,后来发现,不改变SublimeREPL的配置文件,直接新建快捷方式id改成repl_python_run 即可
第一种方法使用起来和python默认IDLE一样,第二种方法像cmd窗口
⑶ python 中文名的文件的保存
windows文件名的编码是cp936的,你在使用中文文件名的时候转下码就行了。
比如你python文件编码是utf8
#
-*-
coding:
utf-8
-*-
he='开心.mp3'
f=open(he.decode('utf-8').encode('cp936'),'w')
f.close()
就可以了~~~
⑷ Python 字符集编码 - UTF-8 编码
Unicode 的编码范围为 0~0x10FFFF ,如此大的范围,显然没办法像 ASCII 编码一样使用一个字节存储。为此,Unicode 制定了各种储存编码的方式,如: UTF-8 、 UTF-16 和 UTF-32 ,这些存储格式被称为 Unicode 转换格式 UTF 。
每种 Unicode 转换格式都会把一个编码存储为一到多个编码单元,如 UTF-8 的编码单元为 8 位的字节; UTF-16 的编码单元为 16 位,即 2 个字节; UTF-32 的编码单元为 32 位,即 4 个字节。
其中, UTF-8 是在互联网上使用最广泛的一种 Unicode 转换格式,具有以下显着的优势。下面,我们就先来看看 UTF-8 具有哪些有点吧~
1. UTF-8 中每个 ASCII 字符只需要一个字节去存储,因此一个 ASCII 文本本身也是一个 UTF-8 文本,即做到了向后兼容。
比如 A 的 ASCII 码对应为 0x41 , a 的 ASCII 码对应为 0x61 ,那么 UTF-8 兼容 ASCII 也就意味着:
这里,需要再次提醒一下:Unicode 是表现形式,UTF-8 是存储形式;即 UTF-8 解码之后为 Unicode ,Unicode 可以编码成 UTF-8 。
2. UTF-8 采用字节为存储单元,因此不存在字节的大端和小段的问题。
UTF-16 和 UTF-32 的存储单元分别是 2 字节和 4 字节,因此在存储时会涉及到大小端的问题。那什么是大小端模式呢?下面我们来暂停补充一下~
关于如何获知你的环境使用的是大端模式还是小端模式,这里有个简单的方式:定义一个 short 类型的数组即可:
数字 1 在 short 类型中表示为 0x0001 ,高位为 0x00 ,低位为 0x01 。我们可以很直观地看到,数组在保存数据时,将高位 0x00 放在了高地址处,将低位 0x01 放在了低地址处。因此使用的就是小端模式。
那 UTF-8 为什么可以使用字节来作为存储单元,而不用担心字节序的问题呢?这就涉及到了 UTF-8 巧妙的编码规则~
UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用 1~4 个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8的编码规则很简单,只有二条:
1)对于单字节符号,字节的第一位设为 0 ,后 7 位为这个符号的 Unicode 码。也就是我们上文提到的向后兼容:对于英文字母,UTF-8 编码和 ASCII 码是相同的。
2)对于使用 X 个字节存储的符号,第一个字节的前 X 位设置为 1 ,第 X+1 位设置为 0 ,后面字节的前 2 位一律设置为 10 ,剩下的位置一次填充这个符号的 Unicode 码。
下表总结了编码规则,字母 x 表示可用于编码的位:
跟据上表,解读 UTF-8 编码也非常简单:如果一个字节的第一位是 0 ,则这个字节单独就是一个字符;如果第一位是 1 ,则连续有多少个 1 ,就表示当前字符占用多少个字节。
下面,我们就来演示一下 UTF-8 编码的过程。
首先,获取汉字 鱼 的 Unicode 码:
我们不妨先对 鱼 这个汉字使用 utf-8 编码看看使用几个字节存储:
鱼 在 UTF-8 编码中使用 3 个字节存储,因此其存储的二进制的形式为 1110xxxx 10xxxxxx 10xxxxxx ,将 Unicode 1001 110001 111100 依次填充到占位符 x 的位置就得到: 11101001 10110001 10111100 。
下面,我们将上述推导得出的 11101001 10110001 10111100 转换为十六进制,验证一下是否为 b'xe9xb1xbc' :
验证无误!
⑸ python中文显示乱码,已经在开头有了coding: utf-8
乱码原因:
因为你的文件声明为 utf-8,并且也应该是用 utf-8 的编码保存的源文件。但是 windows 的本地默认编码是 cp936,也就是 gbk 编码,所以在控制台直接打印 utf-8 的字符串当然是乱码了。
解决方法:
py文件用记事本打开,另存为utf-8格式即可
⑹ 如何设置python的编码格式为utf-8
python的编码格式?
#coding=utf-8
这是文档编码
import sys
sys.setdefaultencoding("utf-8")
这是设置默认编码方式为utf-8
xx.encode("utf-8")
这是字符串编码操作
import codecs
codecs.open(xx,'r','utf-8"),这是文件编码读取方式