DBMS のフロントエンドって何使ってますか? phpMyAdmin ? いやいや、やっぱりね、ターミナルから離れたくないんですよ。
自分の場合は普段 PostgreSQL なので psql を使っているのですが、いつも日本語に関してはなんとなくごまかしながら作業していました。よくやるのは
screen の :encoding を DBMS の encoding に合わせる
という方法で、これで日本語の表示に関しては問題ないのですが、Terminal.app を使っていると日本語を含む文字列を shell 上で扱う際に若干問題があったりします。1今まではこの環境で直接日本語を検索しないようにしていたのですが、今回ちょっとした日本語検索の作業を行うことになって、困ったことになりました。
- Terminal.app + psql では編集してくり返し作業を行う際に日本語が乱れる
- pgAdmin III では日本語をまともに入力できない
以前は DBMS の作業のためだけに eclipse を入れていたりしました。くやしいですが CSV ダウンロードなどの機能を持った GUI のツールが便利なのは認めます。でもやっぱセットアップが面倒で、可搬性が高くないし高負荷で地球に優しくないなぁとも思うわけで。
そこで思い出したのが Emacs の sql-postgres. え、eclipse 使うのと違わない? まぁまぁ。
21世紀ですよ。Emacs くらい許してください。
まぁ要するに Emacs の中から psql を呼ぶんですが、こうなると screen の :encoding で合わせる技は却って面倒になります。screen の encoding と emacs の terminal-encoding が合わなくなる可能性が出てきます。えぇ、データが euc-jp とか化石な環境の場合は、ですが。
少し悩みましたが、マニュアルを読んでいたらあっけなく解決2。
\encoding utf-8; だけでよかった3
なんだそういうことか。よーしもう一度整理しよう。
- Emacs + sql-XXX4 でコマンドラインツールを呼び出して DBMS サーバに接続する
- \encoding 使っているクライアントのエンコーディング;
- shell 上の生 psql5 と違って Emacs 上なので日本語の編集も問題なし
- Emacs なので M-/ でいろいろ補完できる。これが素の psql より断然便利。
- 履歴を戻るときは shell-mode と同じで M-p
という、予想外に強力な環境ができあがった。なんだー、みんなそりゃ Emacs から出ないで作業するわけだよー。
これで一安心。