2016-10-17 4 views
0

は、だから私は、私は、HTMLデータからなる文字列を読んでいる、と私はこのような文字列を処理しています、Python3.5で奇妙なエンコーディングエラーに遭遇しています:エンコーディングエラーPython3.5

def parseHtml(self,url): 
     r = requests.get(self.makeUrl()) 
     data = r.text.encode('utf-8').decode('ascii', 'ignore') 
     self.soup = BeautifulSoup(data,'lxml') 

私は、次を印刷しようとしているときにエラーが発生した:

def extractTable(self): 
     table = self.soup.findAll("table", { "class" : "messageTable" }) 
     print(table) 

私は自分のロケールをチェックして、およびSOの前の同様の記事で述べたようにエンコード/デコードのさまざまなバリエーションを試してみました。最も奇妙なこと(私にとって)は、スクリプトが完璧に別のマシンと私のラップトップで動作することです。しかし、私のWindowsマシン上で、私のUbuntu上(リモートサーバにCygwinを使用して)それは単に実行文句を言わないインストールしています私は:

UnicodeEncodeError: 'ascii' codec can't encode character '\xa0' in position 1273: ordinal not in range(128) 
+0

これは、Python 3.5には「ユニコード」がありません。 –

+0

あなたは2.7でコードを実行していますが、データを無視してデコードした後にUnicode BOMを作成することはできません。また、Python 3のどこでも例外がスローされます。 –

+0

http://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec- cant-encode-character-u-xa0-in-position-20 – Maddy

答えて

0

がわかりましたので、私は私のローカルマシンにリモートサーバーからファイルを移動し、それは完全に実行されました。明らかに何かが間違っていた

>>> import sys 
>>> sys.stdout.encoding 
'ANSI_X3.4-1968' 

ので、私は輸出してしまった:私はその後、私のsys.stdout.encodingを確認

export PYTHONIOENCODING=utf-8 

出来上がり!

関連する問題