Fedora Core1の文字コードを UTP-8から従来のEUC-JPに変更する方法が載っていました。

http://rarfaxp.riken.go.jp/comp/tips/fedora.html

ただ、変更時期がインストール直後となっています。

直後というのは、直後でないと一切ダメという意味か、作業が進んでからやると、変更前と後で矛盾が生じるとかいう意味なのかどういうことなのでしょうか?

PostgresのDBでトラブっていて、ここを変更してもEUC-JPでDBを作成するとうまくいきません。

よろしくお願いします。

A 回答 (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)
    • good
    • 0
この回答へのお礼

#1さん、#2さん、こんにちは。

インストールですが、インストールはrpmからしています。

Fedoraのロケール(eucへ)を変更してからcreatedbし、.php(eucで)やってみたところ、無事動きました。

ただ、UTF-8のまま、eucでcreatedbした時はダメでした。

本題の途中から変えてもOKかという点ではOKのもようでした。

initdb からのテストは環境がないためできませんでした。次回、また、試してみようと思います。

どうも、ありがとうございました。

お礼日時:2004/05/02 20:19

こんにちは。

hirasaku です。
直後じゃなくても大丈夫だと思うのですが。
postogreSQLは詳しくないのですが、ちょこっと調べてみたら、postgreでロケールの設定ができるようなのですが。

postgreのバージョンが書かれてないのでわかりませんが
initdb --encoding=EUC_JP --no-locale
もしくは
initdb -E EUC_JP --no-locale
で、defaultのロケールが設定できるようなのですが。
試されましたか
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ