Python3を使っていて「Non-UTF-8 code starting with xe3」というエラーが出ました。
ネットで調べると解決策として「エンコードを指定する」と書かれています。
しかしPython3はUTF-8を使っていれば問題ないはずです。
エラーが発生したのは次のコードです。
text = “吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。のみならず顔の真中があま”
単に変数に日本語の文字列を代入しています。
試しに「text = 」のスペースを削除して「text=」にしてみました。
すると正しく動きました。
コードの文字列が長すぎるとエラーになるようです。
text = “吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。”
text += “ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。のみならず顔の真中があまりに突起している。”
このように分割して結合した場合も正しく動きました。
また外部ファイルを読み込むときはエラーになりません。
今回はテスト用のサンプルとして埋め込みましたが、実際にはこれほど長い日本語のテキストを埋め込むことはまずないので問題はないかもしれません。
コメント
長すぎるってエラーに素直に書いてくれればいいんですけどね
>なすさん
全くそのとおりです。
意外とこれ取り上げてるとこなくてめっちゃありがたい記事です。この記事見つからなかったら
ありがとうございました。
お役に立てて嬉しいです。