LoginSignup
1

More than 5 years have passed since last update.

pyperclipで日本語が使えない

Last updated at Posted at 2017-06-27

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
  3. You can use dark theme
What you can do with signing up
1