tugutugu
@tugutugu (tugu tugu)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Flaskでcsvの読み込みについて cp932

解決したいこと

Flaskで下記のエラーを解消したいです。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8c in position 0: invalid start byte

UnicodeDecodeError: 'utf-8'コーデックは位置0のバイト0x8cをデコードできません:無効な開始バイト

例)
csvをアップロードをクリックすると上記のエラー表示になります。
encodingをcp932で操作できる方法をご教示いただけますと幸いです。

発生している問題・エラー

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8c in position 0: invalid start byte

UnicodeDecodeError: 'utf-8'コーデックは位置0のバイト0x8cをデコードできません:無効な開始バイト

該当するソースコード

@app.route('/test', methods=['GET', 'POST'])
def uploads_file():
    if request.method == 'POST':
        if 'file' not in request.files:
            flash('ファイルがありません')
            return redirect(request.url)
        file = request.files['file']
        if file.filename == '':
            flash('ファイルがありません')
            return redirect(request.url)
        if file and allwed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return redirect(url_for('uploaded_file', filename=filename))
    return render_template('p.html')

@app.route('/uploads/<filename>', methods=['GET', 'POST'])
def uploaded_file(filename):
    df = pd.read_csv(os.path.join(app.config['UPLOAD_FOLDER'],filename))

自分で試したこと

encoding="cp932"を色々試しましたが、エラーになります。
アドバイスをいただけると幸いです。
ここに問題・エラーに対して試したことを記載してください。

0

3Answer

これで開けるはずです。

df = pd.read_csv(os.path.join(app.config['UPLOAD_FOLDER'],filename), encoding="cp932")

encoding="cp932"を色々試しましたが、エラーになります。

何を試してどうエラーが出たか書いてください。

1Like

どこの行でエラーが発生しているか書いていただけると幸いです。

エラーから予想すると、ファイルの文字コードが違うか(JISコードだったり)途中の処理で間違っているかだと思います。
データの流れを知るためにも、もう一度データをprint()で表示してデバックしてみてください。

0Like

Comments

  1. @tugutugu

    Questioner

    ご連絡ありがとうございます。

    エラーの部分は、dfの部分になります。

    csvのファイルがUTF-8の場合は、動きますが、cp932のcsvを取り込みたい場合はどのような記述なのかご教示いただけますと幸いです!
    宜しくお願い致します。

Your answer might help someone💌