UnicodeEncodeError: 'cp932' codec can't encode character ... illegal multibyte sequence
テンプレ
import io, sys
sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
襲来。UnicodeEncodeError
Windows, MSYS2, Python3の環境でプロセス間通信が必要になった。
Python3のスクリプトを子プロセスで走らせて出力を親にパイプしてごにょごにょする。
そしたらスクリプト側でおなじみのUnicodeEncodeErrorが出た。
UnicodeEncodeError: 'cp932' codec can't encode character '\xa9' in position 9261: illegal multibyte sequence
エラーを出したコードはこんな感じ。
#!/usr/bin/python3
# coding: utf-8
import sys, urllib3
http = urllib3.PoolManager()
req = http.request('GET', 'http://qiita.com')
if req.status == 200:
print(req.data.decode())
else:
print('Error: {0}'.format(req.status))
どこから例外が飛んでくるかというとdecode()かと思ったらprint()から飛んできてる。
こちらを参考にコードを修正すると無事に出力できた。
参照: UnicodeEncodeError: に悩まされない。Python2.x から Python3.x への乗り換え
#!/usr/bin/python3
# coding: utf-8
import io, sys, urllib3 # Here
http = urllib3.PoolManager()
req = http.request('GET', 'http://qiita.com')
if req.status == 200:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') # Here
print(req.data.decode())
else:
print('Error: {0}'.format(req.status))
UnicodeDecodeErrorは?
UnicodeDecodeErrorについては↓の記事を参照してください。
Author And Source
この問題について(UnicodeEncodeError: 'cp932' codec can't encode character ... illegal multibyte sequence), 我々は、より多くの情報をここで見つけました https://qiita.com/narupo/items/663dafee9c2d20311083著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .