1. 程式人生 > >python: py2下 中文 的 檔案讀寫 及 列印

python: py2下 中文 的 檔案讀寫 及 列印

  讀寫中文檔案時,不需要考慮編碼的情況。此時雖然可以正常從檔案中讀取中文,也可以正常地將中文寫入檔案中,但是無法正常列印中文欄位到螢幕上:

# coding=utf-8

SRC_PATH = './src.txt'
DST_PATH = './dst.txt'

src_file = open(SRC_PATH, 'r')
dst_file = open(DST_PATH, 'w')
for line in src_file.readlines():
    dst_file.writelines(line)
    print line
src_file.close()
dst_file.close()
琛��誇腑蹇�����浜���

����涓�蹇��ㄤ�嫻楓��

Hello world! Hello python!


  列印中文欄位時,需要提前把系統編碼由 ascii 轉換到 utf-8

# coding=utf-8

SRC_PATH = './src.txt'
DST_PATH = './dst.txt'

import sys                       # new added
reload(sys)                      # new added
sys.setdefaultencoding('utf-8')  # new added
src_file = open(SRC_PATH, 'r') dst_file = open(DST_PATH, 'w') for line in src_file.readlines(): dst_file.writelines(line) print line.encode('gb18030') # new added src_file.close() dst_file.close()
行政中心是北京。

金融中心在上海。

Hello world! Hello python!


  檢視系統編碼的具體轉換狀況:

# coding=utf-8

import sys
print
('origin_encoding = {}'.format(sys.getdefaultencoding())) reload(sys) sys.setdefaultencoding('utf-8') print ('new_encoding = {}\n'.format(sys.getdefaultencoding()))
origin_encoding = ascii
new_encoding = utf-8


  在不轉換系統編碼下直接輸出中文欄位:

print u'中文'
print u'中文'.encode('gbk')
print u'中文'.encode('gb18030')
print
print '中文'
print u'中文'.encode('utf-8')
中文
中文
中文

涓���
涓���


  在轉換系統編碼下直接輸出中文欄位:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u'中文'
print '中文'.encode('gbk')
print '中文'.encode('gb18030')
print u'中文'.encode('gbk')
print u'中文'.encode('gb18030')
print
print '中文'
print '中文'.encode('utf-8')
print u'中文'.encode('utf-8')
中文
中文
中文
中文
中文

涓���
涓���
涓���