• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Django Python csv エラー)

Django Python csv エラー

このQ&Aのポイント
  • 下記のようなエラーでて解決できないです。Unicodeのエラー?
  • データベースに保存しょうと思ったら不正な文字列値のエラーがでてきました。
  • ご教授お願いいたします!

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

とりあえず、Python Unicode で検索して、勉強してみてください。 pyhton公式のマニュアルやチュートリアルにも書いてあります。 Pythonの2.xでは、バイト列で記憶するstr文字列と、UNICODEで記憶する unicode文字列があります。 strは、日本語等のマルチバイト文字を、複数のバイト列として記憶します。 それがどの文字コードで書かれたものか、についての情報は記憶していません。 そのため、文字コードの変更が必要な場合は、元がどの文字コードであるかを指定する必要があります。 unicodeでは、文字は「文字」として記憶します。 そのため、文字コードの変更が必要な場合は、その文字がその文字コードで何番になるかを調べるだけなので、簡単にできます。 http://docs.python.jp/2/library/csv.html Python2のcsv.readerはUnicode対応していません。 よって、 > tmp.user_name = row[1] のrow[1]はstr文字列です。 これを登録する際に、DBが求めるコードに変換しようとするも、元のコードが分からないので変換できない、というエラーだと思われます。 対応策は、 row[1] をUnicode文字列にdecodeしてやることです。 前回の質問( http://okwave.jp/qa/q8492654.html ) で「登録日」はUnicodeになっているようです。 提示された部分に、日付を処理している部分が見当たらないのですが、そちらではUnicode対応していませんか?

hito2014
質問者

お礼

ご指摘、ありがとうございます。とても勉強になりました。 >>前回の質問( http://oshiete.goo.ne.jp/qa/8492654.html ) で「登録日」は>>Unicodeになっているようです。 >>提示された部分に、日付を処理している部分が見当たらないのですが、そちら>>ではUnicode対応していませんか? 対応はしていませんでした。必要がなかったため、削除しました。 あとは、データベースのalin1からclient,databaseなどを全部UTF-8に変えただけです。

hito2014
質問者

補足

codecs.open('C:\Users\hasichaolu\Desktop\mkc\Py_meshi\sample.csv', 'r+b',encode='utf-8') as f: にしたら動いてくれたけど、なんか違和感があります!

関連するQ&A

専門家に質問してみよう