- ベストアンサー
Fedora Core1の文字コードをEUC-JPにする
Fedora Core1の文字コードを UTP-8から従来のEUC-JPに変更する方法が載っていました。 http://rarfaxp.riken.go.jp/comp/tips/fedora.html ただ、変更時期がインストール直後となっています。 直後というのは、直後でないと一切ダメという意味か、作業が進んでからやると、変更前と後で矛盾が生じるとかいう意味なのかどういうことなのでしょうか? PostgresのDBでトラブっていて、ここを変更してもEUC-JPでDBを作成するとうまくいきません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
日頃PostgreSQLを使用しているわけではないので、参考程度です。 >Fedora Core1の文字コードを UTP-8から従来のEUC-JPに変更する方法が載っていました。 OS上での言語の環境変数として、 [root@pent7 root]# su - postgres -bash-2.05b$ echo $LANG ja_JP.UTF-8 あるいは、一時的に、ja_JP.eucJPで、dateをみると、 -bash-2.05b$ LANG=ja_JP.eucJP date 2004ǯ 5�� 2�� ������ 05:55:09 JST (最終表示は異なると思います) 同様に、フランス語の環境とすると、 -bash-2.05b$ LANG=fr_FR date dim mai 2 05:55:25 JST 2004 の様になります。 >直後というのは、直後でないと一切ダメという意味か、作業が進んでからやると、変更前と後で矛盾が生じるとかいう意味なのかどういうことなのでしょうか? いつでも変更は可能とおもいますが、今回のPostgreSQLの場合のencodingとは、別の問題と思います。LANGで、一時的に変更するか、export LANGで恒久的に、環境を変更するかではないでしょうか。 >PostgresのDBでトラブっていて、ここを変更してもEUC-JPでDBを作成するとうまくいきません。 PostgreSQLは、ダウンロードされたのでしょうか、Fedora Core 1にも、redHatのどのバージョンから組み込まれたのかは失念しましたが、始めから入っているPostgreSQLでは、"postgres"ユーザも存在します。 $ initdb --no-locale encoding=EUC_JP あるいは、PostgreSQLをソースからコンパイルするのであれば、 ./configure --enable-multibyte[=encoding_system]で、エンコードを選択することが可能です。 引数無しで初期化すると、encodingは、SQL_ASCIIとなります。 $ postmaster& $ psql -l -bash-2.05b$ psql -l List of databases Name | Owner | Encoding -----------+----------+----------- template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII (2 rows) -bash-2.05b$ createdb test CREATE DATABASE -bash-2.05b$ psql -l List of databases Name | Owner | Encoding -----------+----------+----------- template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII test | postgres | SQL_ASCII -bash-2.05b$ createdb -E EUC_JP test2 CREATE DATABASE -bash-2.05b$ psql -l List of databases Name | Owner | Encoding -----------+----------+----------- template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII test | postgres | SQL_ASCII test2 | postgres | EUC_JP SQL_ASCIIでも、insert文で、日本語が入力できました。理由は良く分かりません。 -bash-2.05b$ psql test Welcome to psql 7.3.4, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit test=# CREATE TABLE test ( test(# city varchar(80), test(# date date test(# ); CREATE TABLE test=# select * from test; city | date ------+------ (0 rows) test=# INSERT INTO test VALUES ('東京','2004-05-02'); INSERT 25177 1 test=# select * from test; city | date --------+------------ 東京 | 2004-05-02 (1 row)
その他の回答 (1)
- hirasaku
- ベストアンサー率65% (106/163)
こんにちは。hirasaku です。 直後じゃなくても大丈夫だと思うのですが。 postogreSQLは詳しくないのですが、ちょこっと調べてみたら、postgreでロケールの設定ができるようなのですが。 postgreのバージョンが書かれてないのでわかりませんが initdb --encoding=EUC_JP --no-locale もしくは initdb -E EUC_JP --no-locale で、defaultのロケールが設定できるようなのですが。 試されましたか
お礼
#1さん、#2さん、こんにちは。 インストールですが、インストールはrpmからしています。 Fedoraのロケール(eucへ)を変更してからcreatedbし、.php(eucで)やってみたところ、無事動きました。 ただ、UTF-8のまま、eucでcreatedbした時はダメでした。 本題の途中から変えてもOKかという点ではOKのもようでした。 initdb からのテストは環境がないためできませんでした。次回、また、試してみようと思います。 どうも、ありがとうございました。