2016-06-28 11 views
0

私はUbuntuとPython 3.4を使ってwikipediaのapiからデータをダウンロードしています。私は名前を保存していますが、異なる言語の文字が正しく保存されていないことがわかりました。utf-8 pythonへの変換

たとえば、日の火曜日はæ¥ã®ç«ææ¥で保存されます。

私はそう、私は

fd = io.open("filename",'w',encoding='utf8') 
fd.write(str(name.encode('utf-8'), 'utf-8')) 

に私のコードを変更しかし、私はまだ同じ結果を得る私はUTF-8で保存することはできません考え出しました。

私が使用しているAPIはhereです。

私が今まで理解していることは、utf-8はすべての言語のテキストを処理できなければならないということです。また、Ubuntuのコンソールにはデフォルトでutf-8があり、moreのようなコマンドを実行すると文字列が正しく出力されるはずです。

+0

どのようにしてデータをPythonに集めていますか?これは 'urlopen()'を通してですか?私はちょうどあなたのリンクに 'urlopen()'を使い、出力をファイルに保存しました。うまくいきました。 – Abdou

+0

ありがとうございます。私はこれをやっています: 'urllib.request.urlopen(url)as url: s = url.read()' –

+0

あなたは単にそれを別のエンコーディングとして解釈している端末ではないと確信していますか? – Bakuriu

答えて

0

問題は私のsshクライアントであり、文字列を間違って表示していました。コードはうまくいきました。

0

応答コードを確認し、応答から文字セットを取得し、それを使用して復号化します。 name.decode('utf-8')またはstr(name, 'utf-8')をデコードすることができます。

F.e.

resp = urlopen(url) 
if resp.code == 200: 
    with open('filename', 'w') as fd: 
     fd.write(str(name, resp.info().get_content_charset())) 
     #or fd.write(name.decode(resp.info().get_content_charset())) 
関連する問題