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"),這是文件編碼讀取方式