サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013/11/25

Pythonでは日本語を扱うのが大変−PHPの方がずっといい

最近痛感したのが、「Pythonでは日本語を扱うのが大変」ということ。こんなにハマってしまうとは思いもよりませんでした。事の起こりは、文字コードがEUC-JPのPostgreSQLデータに、いわゆる"たつさき"があったこと。このためエラーを吐いてしまい、先に進むことができなくなりました。

エラー箇所はconnection.execute(sql)。普通ならデータを変数に格納してからEUC-JPの文字列をUTF-8に変換したりと考えますが、データを変数に格納する前の箇所ですから、encodeだのdecodeだのといった処理以前の話。DB接続メソッドにserver_encoding = "euc-jp"を指定してもダメ。"たつさき"などの特殊な文字がなければ問題なく読めるにもかかわらずです。

そもそもPythonが(正確にはpy-Postgresqlがやっているのかも)EUC-JPデータのDBを読んだ時に、変換しなくてもUTF-8として表示できるというのが妙だと思いました。PHPだと変数に入れた時点でEUC-JPのままなので、自分でmb_convert_encodingしないとUTF-8になりません。つまりPHPは勝手な文字コード変換をしていないということ。ところがPython(py-Postgresql)では勝手に変換しているようで、"たつさき"などの特殊文字さえなければ、ある意味楽。しかし今回のケースを考えると、勝手な変換は余計なお世話。結局Pythonでの実現は断念することにしました。

Webでいろいろ調べると、Pythonで日本語を扱うのは結構大変との情報をよく見ました。PHPでも大変だと思ったのですが、それ以上です。Python(py-Postgresql)が安心して使えるのは、UTF-8のDB、あるいはEUC-JPでも特殊文字がないケースです。以前システムログの解析にPythonでプログラミングしましたが、これなどは半角の英数記号のみで、マルチバイト文字がないので何の問題もありません。今後はPythonは限定的に使うことになるでしょう。

P.S. この記事の内容はPython3での結果です。明日の記事でPython2でうまくいったことを紹介しています。

スポンサーサイト

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1755-a4f98b8c

■  カレンダー

08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。