【Python】UnicodeDecodeError: 'cp932' codec can't decode byte 0x81...エラーの原因と解決方法 #pandas 您所在的位置:网站首页 Python解码byte0x81 【Python】UnicodeDecodeError: 'cp932' codec can't decode byte 0x81...エラーの原因と解決方法 #pandas

【Python】UnicodeDecodeError: 'cp932' codec can't decode byte 0x81...エラーの原因と解決方法 #pandas

2024-07-06 14:10| 来源: 网络整理| 查看: 265

概要

pandasでencodingをcp932に指定してCSVファイルを読み込むコードを実装していたら、以下のエラーが返されました。本記事ではこのエラーの原因と解決方法を記載します。

UnicodeDecodeError: 'cp932' codec can't decode byte 0x81 in position 2407: illegal multibyte sequence

上記は、文字列をデコードしようとした際に、'cp932'(Shift-JIS)というエンコーディング方式を使用した際に発生しています。

原因

UnicodeDecodeErrorは、指定されたエンコーディングに基づいてバイト列を文字列にデコードしようとしたときに、不正なマルチバイトシーケンスが見つかったことを意味するエラー。実際のファイルの文字コードと読み込み時に指定した文字コードが異なっているときに表示される変換エラーです。

0x81というバイト列はShift-JISエンコーディングにおいて特定の文字を表すために使用されていますが、Shift-JISのルールに従わない場合、デコードエラーが発生するのです。

以下のどちらかの場合が多いとのこと。 ・テキストファイルや文字列が正しいエンコーディングで保存されていない ・ファイル内の特定のバイト列がエンコーディングに合致しない

エンコーディングについてややこしい点は、 ・Mac環境でCSVファイルを作成する際のデフォルトのエンコーディングは、一般的にUTF-8 ですが、 ・Windows環境でCSVファイルを作成する際のデフォルトのエンコーディングは、一般的にcp932(Shift-JIS)エンコーディングが多い ということ。

なのでCSVデータが出力された環境によって適切に指定してあげる必要があります。

解決方法

・CSVファイル内の文字列データがUTF-8エンコードされている可能性が高いです。  encodingをutf-8にしてあげると解決しました。

csv_encoding = "utf-8" # エンコーディングを指定 data = pd.read_csv(csv_file_path, encoding=csv_encoding)

ということで、Windows環境で作成されたCSVファイルをUNIX系環境やMac環境で扱う際には、エンコーディングの違いに注意する必要があるでしょう。

参考

【Python】UnicodeDecodeError: 'cp932' codec can't decodeの原因と解決方法



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有