search
LoginSignup
1

More than 5 years have passed since last update.

posted at

updated at

pyperclipで日本語が使えない

pyperclipで日本語が使えない

退屈なことはpythonにやらせよう』を読んでます。
この中で、pyperclipを使用するサンプルプログラムがあるんですが、日本語を使用するとエラーで動作しませんでした。
エラーは以下みたいなやつでした。(すみません、最後らへんは覚えてないです)
「UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0: ~~~~」

原因

  • python2.7の使用
  • VS Codeでpythonを実行

以上の2点でした。
本家サイトのissueを見ると中国語はサポートしてないの?っていうのがあって、その中で中国語で動作しないっていうのを報告されてました。
ただ、「エンコードをutf-8指定すると動作するよ〜」とも報告されていて、私の環境でも同じようにすると動作しました。
しかし、別の方が「エンコード指定しなくても動くよ〜」って報告されていました。
私の環境ではエンコード指定しないと動作しない・・・
なぜ!!

調査

import sys
print('defaultencoding:', sys.getdefaultencoding())

上記コードでどのエンコードが指定されているかを調査!
結果、「ascii」!
なぜ!!
python3入れて、python3で実行させとるやろ!!
VS Codeのタスクランナーで実行させてたので、どのコマンド実行させてるか見ると・・・「python」の文字!
python3じゃ無い!!
python3に変えて、もう一回デフォルトエンコードを調査!
「utf-8」の文字!
pyperclipを実行!
同じエラーで落ちる!!
VS Codeで実行させるのが悪いのかと思い、ターミナルで実行!
無事できました!!

というわけで、原因を特定しました。
VS Codeだとなぜ実行できないのかは分からないです。。。
pythonの勉強を始めたばかりなので、おかしいところがあればご指摘ください!

2017/06/29:追記
VS Codeだとエラーになる原因ですが、どうやらVS Codeがasciiに変換しちゃってるらしい。
github見ると、いっぱいissue立ってた。
開発者側が提示する解決策だと、「task.json」に「"runner": "terminal"」の一文を足せとのこと。
要は、ターミナルで実行させればエラーにならないんだから、ターミナルで実行させればいいじゃんってことですね。
私の環境では、これでtaskでpython実行でもエラーが起こることはなくなりました。
修正できない感じなのかな・・・?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1