営業が使っているパソコンの調子が悪く、何台か更新した。OS無しパソコンの購入を基本にしてきたが、WindowsXPの既定のブラウザIE Ver.6では開けないホームページもあったりで、Windows7パソコンを購入した。
Office2007はXPでも7でも稼働するので、どちらを使っても全く問題がないのだが、しばらくすると、営業からクレームが。
「『m3』が入力できない!」「『筆記体のリットル』が入力できない!」
仕事柄、m3とリットルはよく使う。今まで、半角でm3、L(小文字のLは数字の1と紛らわしいので大文字を使っていた)を使っていたし、全角1文字のm3や『筆記体のリットル』は通常、文字パレットから呼び出してこなければならなかったので、敢えて使う人がいなかった。
それが、ほとんどパソコンの知識のない営業マンから、「『筆記体のリットル』が入力できない!」というクレームがあったので驚いた。調べてみると、Windows7では「りっとる」で変換すると、機種依存文字の『筆記体のリットル』が表示される。これなら、機種依存文字を使ってしまう。「りゅうべ」も同様、全角1文字のm3が表示される。
現在、PostgreSQLはエンコーディングをEUC_JPで運用しているので、機種依存文字を登録しようとすると、エンディングエラーになってしまう。1年前も検討したエンコーディングUTF-8に移行することにした。
以下、その手順。ちなみに、PostgreSQL9.1.2インストール時の設定は
$ configure
$ initdb --encoding=EUC_JP --no-locale
「エンコーディングEUC_JP、ロケールC」となっている。
まず、ダンプデータを作成する。
$ pg_dump DatabaseName --encoding=UTF-8 > HozonMei
使っているデータベースをドロップする前に、セッションを全て切ってしまうために、一度、強制的にpostmasterを止める。
$ pg_ctl -m f stop
LANケーブルを抜いてしまう。
旧データベースをドロップする。
$ dropdb DatabaseName
エンコーディングUTF-8のデータベースを作成する。
$ pg_ctl start
$ createdb DatabaseName -E UTF-8 --locale=ja_JP.UTF-8 -T template0
(「-T template0」を指定しないと、createdb できなかった。)
$ psql DatabaseName -e < HozonMei
下記で確認。
$ psql -l
LANケーブルをつないで、終了。
これで、機種依存文字も登録できるようになった。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
エンコーディングUTF-8で作成したデータベースは、ダンプデータを作成する時に特に--encoding=UTF-8を指定しなくてもUTF-8でダンプできるみたいだ。UTF-8でダンプしたデータはEUC_JPより大きくなるので、UTF-8に移行後、ダンプデータの大きさを比べてみると、--encoding=UTF-8を指定しなくてもダンプデータは移行前のEUC_JPのダンプデータより大きかったのでそう判断した
今後はUTF-8で運用していくので、次回サーバー更新時には下記で、initdbする。
$ initdb --encoding=UTF-8 --locale=ja_JP.UTF-8
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
とりあえず、自宅でデータベースを更新する時は、
createdb DATABESE_MEI -E UTF-8 -l ja_JP.UTF-8 -T template0
とやっている。
Office2007はXPでも7でも稼働するので、どちらを使っても全く問題がないのだが、しばらくすると、営業からクレームが。
「『m3』が入力できない!」「『筆記体のリットル』が入力できない!」
仕事柄、m3とリットルはよく使う。今まで、半角でm3、L(小文字のLは数字の1と紛らわしいので大文字を使っていた)を使っていたし、全角1文字のm3や『筆記体のリットル』は通常、文字パレットから呼び出してこなければならなかったので、敢えて使う人がいなかった。
それが、ほとんどパソコンの知識のない営業マンから、「『筆記体のリットル』が入力できない!」というクレームがあったので驚いた。調べてみると、Windows7では「りっとる」で変換すると、機種依存文字の『筆記体のリットル』が表示される。これなら、機種依存文字を使ってしまう。「りゅうべ」も同様、全角1文字のm3が表示される。
現在、PostgreSQLはエンコーディングをEUC_JPで運用しているので、機種依存文字を登録しようとすると、エンディングエラーになってしまう。1年前も検討したエンコーディングUTF-8に移行することにした。
以下、その手順。ちなみに、PostgreSQL9.1.2インストール時の設定は
$ configure
$ initdb --encoding=EUC_JP --no-locale
「エンコーディングEUC_JP、ロケールC」となっている。
まず、ダンプデータを作成する。
$ pg_dump DatabaseName --encoding=UTF-8 > HozonMei
使っているデータベースをドロップする前に、セッションを全て切ってしまうために、一度、強制的にpostmasterを止める。
$ pg_ctl -m f stop
LANケーブルを抜いてしまう。
旧データベースをドロップする。
$ dropdb DatabaseName
エンコーディングUTF-8のデータベースを作成する。
$ pg_ctl start
$ createdb DatabaseName -E UTF-8 --locale=ja_JP.UTF-8 -T template0
(「-T template0」を指定しないと、createdb できなかった。)
$ psql DatabaseName -e < HozonMei
下記で確認。
$ psql -l
LANケーブルをつないで、終了。
これで、機種依存文字も登録できるようになった。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
エンコーディングUTF-8で作成したデータベースは、ダンプデータを作成する時に特に--encoding=UTF-8を指定しなくてもUTF-8でダンプできるみたいだ。UTF-8でダンプしたデータはEUC_JPより大きくなるので、UTF-8に移行後、ダンプデータの大きさを比べてみると、--encoding=UTF-8を指定しなくてもダンプデータは移行前のEUC_JPのダンプデータより大きかったのでそう判断した
今後はUTF-8で運用していくので、次回サーバー更新時には下記で、initdbする。
$ initdb --encoding=UTF-8 --locale=ja_JP.UTF-8
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
とりあえず、自宅でデータベースを更新する時は、
createdb DATABESE_MEI -E UTF-8 -l ja_JP.UTF-8 -T template0
とやっている。