2016-02-09 204 views
3

我是一個新的python,並且有問題了解unicode。我正在使用 Python 3.4。 我花了一整天試圖通過閱讀有關Unicode包括http://www.fileformat.info/info/unicode/char/201C/index.htmhttp://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html使用unicode字符u201c

我需要,因爲他們在我分析文本用來指特別報價摸不着頭腦。我確實測試過W7命令窗口可以讀寫2個特殊引號字符。 爲了使事情變得簡單,我寫了一個行腳本:

​​

,並得到如下的輸出:

Traceback (most recent call last): 
    File "C:\Users\David\Documents\Python34\Scripts\wordCount3.py", line 1, in <module> 
    print ('\u201c') 
    File "C:\Python34\lib\encodings\cp437.py", line 19, in encode 
    return codecs.charmap_encode(input,self.errors,encoding_map)[0] 
UnicodeEncodeError: 'charmap' codec can't encode character '\u201c' in position 0: character maps to <undefined> 

那麼,如何寫的東西來指代這兩個字符u201Cu201D

這是在文件打開語句中正確的編碼選擇嗎?

with open(fileIn, mode='r', encoding='utf-8', errors='replace') as f: 
+1

你的終端或文件編碼爲CP-437,而不是UTF-8。確保終端以UTF-8(http://stackoverflow.com/a/388500/3929826)運行,並且您的文件編碼爲UTF-8(請參閱編輯器設置)。 –

+2

[python 3.2 UnicodeEncodeError:'charmap'編解碼器無法在位置9629中對字符'\ u2013'進行編碼:字符映射到](http://stackoverflow.com/questions/16346914/python-3-2- unicodeencodeerror-字符表的編解碼器 - 斜面編碼字符-u2013-i)的 – tynn

回答

1

原因是在3.x Python中你不能只將unicode字符串與字節字符串混合。可能你已經閱讀了Python2x的手冊,只要字節串包含可轉換的字符,這些東西都是可能的。

print('\u201c', '\u201d') 

對我來說很好,所以唯一的原因就是你對源文件或終端使用了錯誤的編碼。

你也可以明確地指向蟒你使用,通過投擲ontop的源文件的下一行代碼頁:

# -*- coding: utf-8 -*- 

補充:看來,你的工作在Windows機器上,如果是這樣你可以通過運行將您的控制檯代碼頁更改爲utf-8

chcp 65001 

在啓動python解釋器之前。這變化將是暫時的,如果你想永久的,運行的下一個.reg文件:

Windows Registry Editor Version 5.00 
[HKEY_CURRENT_USER\Console] 
"CodePage"=dword:fde9