「Non-UTF-8 code starting with '\xe3'」のときに試した方法

Pocket

Python3を使っていて「Non-UTF-8 code starting with '\xe3'」というエラーが出ました。
ネットで調べると解決策として「エンコードを指定する」と書かれています。
しかしPython3はUTF-8を使っていれば問題ないはずです。

エラーが発生したのは次のコードです。

text = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。のみならず顔の真中があま"

単に変数に日本語の文字列を代入しています。
試しに「text = 」のスペースを削除して「text=」にしてみました。
すると正しく動きました。
コードの文字列が長すぎるとエラーになるようです。

text = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。"
text += "ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。のみならず顔の真中があまりに突起している。"

このように分割して結合した場合も正しく動きました。
また外部ファイルを読み込むときはエラーになりません。
今回はテスト用のサンプルとして埋め込みましたが、実際にはこれほど長い日本語のテキストを埋め込むことはまずないので問題はないかもしれません。

[ 2020年7月1日 | カテゴリー: Python, デジタル | タグ: , ]

« | »

コメント

  1. なす より:

    長すぎるってエラーに素直に書いてくれればいいんですけどね

  2. stabucky より:

    >なすさん
    全くそのとおりです。

  3. 文字列が長すぎるとエラーなんて知らずに時間半無駄にした人 より:

    意外とこれ取り上げてるとこなくてめっちゃありがたい記事です。この記事見つからなかったら

  4. 文字列が長すぎるとエラーなんて知らずに1時間半無駄にした人 より:

    ありがとうございました。

  5. stabucky より:

    お役に立てて嬉しいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報