質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1026閲覧

win10のpythonでUnicodeDecodeError

Sonono

総合スコア85

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/06/02 14:38

koukounojituryoku_input.txt というファイルに日本語のテキストが格納されており、それを読み込もうとしていますが、UnicodeDecodeErrorがでます。win10なのですが、winでは表示するときにcp932に変換するので変換されない文字があるとエラーが出るということで、
QIITAの記事を参考に以下のコードを書いてみたのですが、変わらず同じエラーコードが出ます。

f = open('koukounojituryoku_input.txt', 'r') sys.stdin = f text04 = input().encode('cp932', "ignore").decode('utf-8') print(text04)

エラーコード ->

Traceback (most recent call last): File ".\koukounojituryoku.py", line 12, in <module> text04 = input().encode('cp932', "ignore").decode('utf-8') UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

メッセージを見る限り、表示以前に読み込みの段階でエラーになっています。

そもそもなぜsys.stdinを書き換えているのかもわかりませんが、以下では駄目ですか?

python

1with open("koukounojituryoku_input.txt", encoding="適切なエンコーディングの名前") as f: 2 text04 = f.readline()

エンコーディングは、0xefから始まるファイルならencoding="utf-8_sig"でしょうか。

投稿2019/06/02 14:46

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sonono

2019/06/02 15:09

できました!ありがとうございます。 日本語が書いてあるファイルの方も自分で書いた日本語なのですが、0xefから始まるファイルというのはファイルの中身の話ではないのでしょうか?どこを見ればよいのでしょうか?(winのメモ帳で作成したファイルなのですが調べたらたしかにBOM付というものでutf-8_sigにしておけばよいとかいてありました)
hayataka2049

2019/06/02 21:06 編集

ファイルの中身の話です。ただし、バイト列レベルの話なので、通常のメモ帳などのエディタでは確認できません。バイナリエディタなどを使えば見れます。 UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence は0xefというバイトがファイルの位置0(先頭)に書かれていることを表します。私の回答はエラーメッセージだけを見て判断しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問