㈠ cmd命令怎樣將Unicode字元轉成文字
在中文Windows系統中,如果一個文本文件是UTF-8編碼的,那麼在CMD.exe命令行窗口(所謂的DOS窗口)中不能正確顯示文件中的內容。在默認情況下,命令行窗口中使用的代碼頁是中文或者美國的,即編碼是中文字元集或者西文字元集。
如果想正確顯示UTF-8字元,可以按照以下步驟操作:
1、打開CMD.exe命令行窗口
2、通過
chcp命令改變代碼頁,UTF-8的代碼頁為65001
chcp
65001
執行該操作後,代碼頁就被變成UTF-8了。但是,在窗口中仍舊不能正確顯示UTF-8字元。
3、修改窗口屬性,改變字體
在命令行標題欄上點擊右鍵,選擇"屬性"->"字體",將字體修改為True
Type字體"Lucida Console",然後點擊確定將屬性應用到當前窗口。
這時使用type命令就可以顯示UTF-8文本文件的內容了:
type
filename.txt
4、通過以上操作並不能完全解決問題,因為顯示出來的內容有可能不完全。可以先最小化,然後最大化命令行窗口,文件的內容就完整的顯示出來了
㈡ python unicode編碼
python unicode編碼:
下面的代碼創建了一個Unicode字元串,用UTF-8編碼器將它編碼,然後寫入到一個文件中去,接著把數據從文件中讀回來,解碼成Unicode字元串對象,最後,列印出Unicode字元串,用以確認程序正確地運行。
在linux中編寫,在VIM中輸入如下代碼,保存為uniFile.py
#/home/xiaopeng/python/code/uniFile.py
'''
:Writes
aUnicodestringtoafileinutf-8andreadsitbackin
'''
CODEC='utf-8'編碼方式
FILE='unicode.txt'要存的文件名
hello_out=u"Helloworld "創建了一個Unicode格式的字元串
bytes_out=hello_out.encode(CODEC)用UTF-8編碼
f=open(FILE,'w')
f.write(bytes_out)寫入指定文件中
f.close()
f=open(FILE,'r')
bytes_in=f.read()讀取
f.close()
hello_in=bytes_in.decode(CODEC)解碼
printhello_in列印
在終端中輸入:python uniFile.py
結果列印出 Hello world
然後在python目錄下會發現多了一個名為unicode.txt的文件,用cat命令查看一下,發現裡面的內容和列印的結果一樣.
把Unicode應用到實際中注意一下四點:
1程序中出現字元串時一定要加一個前綴u
2不要用str()函數,用Unicode()代替
3 不要用過時的string模塊。如果傳給它非ASCII碼,它會把一切搞砸。
4 不到必須時不要在你的程序里編解碼Unicode字元,只在你要寫入文件或者資料庫或者網路時,才調用encode()函數和decode()函數。
㈢ Python2.7 中文字元編碼,使用Unicode時,選擇什麼編碼格式
關於編碼和亂碼的問題,我簡單講一下。
通常問這類問題的人是混淆了若干個不同的概念,並且他們自己也沒有意識到自己混淆了這些概念的。
終端顯示字元的編碼(windows下終端是cmd,linux下是各種terminal,遠程登錄是putty或者xshell)
shell環境的編碼。比如中文版windows用的是gbk(向下兼容gb2312),大多數linux發行版使用的是utf-8(LANG=zh_CN.UTF-8)。
文本文件的編碼。這個通常取決於你的編輯器,而且有的編輯器支持多種編碼的話,你可以在文本開頭位置指定編輯器使用特定編碼。比如# -*- coding: utf8 -*-,vim看到這行會默認將這個腳本認定為utf-8兼容編碼格式。
應用程序的內部編碼。一個字元串,作為數據只是一個位元組數組,但是作為字元的數組,就有一個解析方式。java和python的內部字元編碼是utf-16,python和java都支持用不同的編碼來對位元組數組進行decode來得到字元數組。
拿題主的問題來解釋一下。
我在ubuntu kylin中文環境下默認terminal中做了同樣的實驗,但是結果和題主恰好相反:
題主現在弄了一個文件,在開始加上了
# -*- coding: utf8 -*-
這下編輯器看到了,知道這文件是utf-8的了。所以編輯器對讀入的一坨坨位元組用utf-8來解碼,對於輸出到磁碟的漢字也用utf-8來編碼。所以你在文件裡面看到的看上去像「漢字」的東西,就和第一種情況下想同了,當然代碼就跑得通。
順便說一下,如果編輯器無視行首這行編碼聲明,或者編輯器無法支持utf-8格式,那麼你弄好的文件在那個編輯器下就會顯示亂碼,多麼簡單的道理啊。
終端和環境的編碼一致(本機通常是一致的,不一致常常出現在遠程登錄);如果不一致就需要有編輯器或者文本閱讀器做一個兼容兩者的轉換。
編輯器能夠認識文本編碼
系統擁有能顯示這種字元的字體。
這也就是我為什麼一直反對在程序文本中使用除ascii之外的所有編碼字元的原因。環境太復雜了,繞開問題遠比解決問題輕松。