人に聞けない痔の悩み、これでスッキリ >>

データベースの文字エンコーディングがEUC_JPになっていないので,EUC_JPにしたいのですが,どのファイルのどの部分をどのように変えればいいのかわかりません。
ウインドーズのODBCドライバがEUC_JPに対応しているようなので,そのように変えたいのですが。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

 DB作り直すしかないんじゃないかなぁ・・・・。

OSは何?
 ALTER DATABSEは無かった感じ。CREATE DATABASE文で文字エンコーディングを指定できるのでpg_dumpでDBのバックアップを取ってdrop dabataseしてエンコーディング指定でcreate databaseしてpsqlでリストアすれば良いんじゃないかな。
 ところで、postgresqlにはサーバ(データベース)文字エンコーディングとクライアントエンコーディングがあって、Windows用の日本語対応ODBCドライバはサーバエンコーディングEUC-JPまたはLatin固定でクライアントエンコーディングがSJISなような気がする。正確ではないけど。

この回答への補足

osはfedoracoreです。Win対応のODBCドライバを使って,VBからアクセスしてます。

補足日時:2004/09/22 21:19
    • good
    • 0

WindowsでつかうならWINと文字コードを設定すればよいです。



以下サイトはPostgresqlの文字コード一覧です。

参考URL:http://www.postgresql.jp/document/pg742doc/html/ …

この回答への補足

下記の皆様も含め,ご回答ありがとうございました。締め切ります。

補足日時:2004/10/25 11:01
    • good
    • 0

最初に、initdbコマンドを打つときに



initdb -E EUC_JP

とすれば、全部のデータベースがEUC_JPになります。

また、データベースを作成する際

CREATE DATABASE データベース名 -E EUC_JP

でそのデータベースはEUC_JPになります。

postgresqlをcygwin(Windows上)で動かしているなら文字コードの部分をWINとすればShift_JISになったとおもいます。

自分も昔やったことなのでハッキリ覚えてませんが。。

参考URL:http://allabout.co.jp/career/database/closeup/CU …
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qpostgresのdatabase名と、そのencodingを取得する

postgresのdatabase名と、そのencodingを取得する方法を教えてください。



postgres8.1です。

システムカタログ
http://www.postgresql.jp/document/pg811doc/html/catalogs.html

pg_databaseの項目として持っているだろうと思い、見てみました。

encodingint4 このデータベースの文字符号化方式

これか?と思いましたが、数値IDのみでした。

この数値から、utf8やsjisといった情報にどうやったら繋がりますか?

Aベストアンサー

pg_encoding_to_char関数で文字エンコーディング名に変換できます。

=> SELECT datname, pg_encoding_to_char(encoding) FROM pg_database;
datname | pg_encoding_to_char
-----------+---------------------
template1 | UTF8
template0 | UTF8
postgres | UTF8
(4 rows)

QデフォルトのCLIENT_ENCODINGを変更したい

データベース、またはPostgresql本体の CLIENT_ENCODING のデフォルトを設定するにはどうしたらよいでしょうか。
ご存知の方いらっしゃいましたら教えてください。

【現状】
Linux機にインストールしたPostgresqlのCLIENT_ENCODINGをSJISにしたいのですが、DBにconnectする毎に SET CLIENT_ENCODING 'SJIS'; することで対処していますが、出来ればソフト側ではなくDB側の設定で対処したいと考えています。

■ デフォルト設定のWindowsとLinuxの差異
Windows:
 サーバ:euc
 CLIENT_ENCODING:sjis ※

Linux[centos4]:
 サーバ:euc
 CLIENT_ENCODING:euc

※ Windowsと同じ設定になるようにしたいです。
  またはCREATEDBのオプションとかでそういうのがあると良いのですが。

PostgreSQLのversion:8.1.5

Aベストアンサー

dateフォルダにあるpostgresql.confのclient_encodingの値を変更しておけばいいのではないでしょうか。

QPostgreSQLの標準文字コードをShift_JISにしたい

CygwinでPostgreSQLを動かしています。
PostgreSQLの標準文字コードをShift_JISにしたいんですが、どうコマンドを打てば良いか分かりません。

本にはEUC-JPを指定する際は
$ initdb -D /usr/local/pgsql/data -E EUC_JP
と打つと書いてありますが、EUC_JPの部分をShift_JISとするとエラーになります。

Shift_JISに設定するにはどのように打てばよいんでしょうか?

Aベストアンサー

PostgreSQLって、サーバ側charsetとしてShift JISは、サポートして無い(即ち、-EでSJISは指定できない)のでは。
代わりに、クライアントとの間でのEUC_JP⇔SJIS自動変換機能を持っていますが。

参考URL:http://www.postgresql.jp/document/pg742doc/html/multibyte.html#CHARSET-TABLE

Qinvalid byte sequence for encoding "EUC_JP":0x904b について

http://www.komonet.ne.jp/script/db_group.htm
http://www.komonet.ne.jp/script.htm

こちらのPHPスクリプトを設置したのですが、データベースに書き込みができません。
データベースの名前とユーザー名も正しいのですが、
pgsql/server.logに以下の文章が記録されます。

invalid byte sequence for encoding "EUC_JP":0x904b

どうしたら直るのでしょうか?

phpソースの中にx-sjisという部分があるので、そこをEUC_JPに書き換えたのですが、ページが真っ白になってしまいました。

ただいま勉強中ですので、どなたか教えていただけないでしょうか?

宜しくお願いします。

Aベストアンサー

EUCは、
1バイト目:A1~FE
2バイト目:A1~FE
なので、
904B
は、その範囲にありません。
つまり、書かれているコードをEUCとして理解できませんということです。(EUCのコードとして不適当)
ちゃんとEUCで書く(あるいはコード変換してやる)必要があります。

Qpg_dumpでデータの引越し

こんにちは。postgreSQL初心者です。
古いサーバからpostgreSQLのデータを pg_dumpもしくは、pg_dumpallで取り出し、新しいサーバに入れようとしてるのですが、以下のようなエラーが出てデータが入ってくれません。
ERROR: invalid byte sequence for encoding "UTF8": 0x8a
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

文字コードの問題だと思うのですが、バージョンの違いや基本的な設定も関係あるのでしょうか?
環境
旧サーバ:Red hat Linux 9, postgreSQL 8.0
移転先サーバ:Fedora Core 6, postgreSQL 8.1

実行コマンド
ダンプ
pg_dump -d DB_NAME > FILE_NAME
※ファイルの中身はちゃんと出力されています。

リストア(?というのでしょうか?)
方法1: \i FILE_NAME > DB_NAME
方法2:cat FILE_NAME  | psql DB_NAME
両方ともエラーがでて、テーブルはできていても一部の中身が入りません。
行き詰まってしまっています。どうか宜しくお願いします。

また、現在設定されている文字コードを調べる方法や、お勧めの参考ホームページがございましたら教えてください。

こんにちは。postgreSQL初心者です。
古いサーバからpostgreSQLのデータを pg_dumpもしくは、pg_dumpallで取り出し、新しいサーバに入れようとしてるのですが、以下のようなエラーが出てデータが入ってくれません。
ERROR: invalid byte sequence for encoding "UTF8": 0x8a
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

文字コードの問題だと思うのですが、バージョンの違いや基本的な設定も...続きを読む

Aベストアンサー

 そのダンプがEUC-JPなんではないのかな。(ダンプを取ったときクライアントエンコーディングがEUC-JPになっていた)
 で、入れなおそうとしているFC6のデフォルトエンコーディングは多分UTF-8なのだろうからダンプをUTF-8として(クライアントエンコーディングをUTF-8として)読もうとして失敗しているのではないでしょーか。
 そのダンプを一旦nkfでUTF-8に直してしまうか、psqlのクライアントエンコーディングをEUC-JPに変更して入れてみたらどうでしょ。
 現在のDB(PostgreSQL内の全DB)のエンコーディングを調べるにはpsqlで入って\lとすれば良い、が、サーバーエンコーディングはあまり関係はないと思うよ。クライアントエンコーディングを調べるには同じくpsqlで\encodingだ。

QSQL Serverで文字コードUTF-8

こんにちわ。
いつも拝見しております。

PHPでODBC接続によるSQL Serverへの問い合わせを行う部分でエラーが出て困っております。

odbc_exec()[function.odbc-exec]:SQL error:[Microsoft][ODBC SQL Server Driver][SQL Server][文字化けしたSQL文]SQL state 37000 in SQLExecDirect in C://.......

SJISの時は問題なかったのですがcharsetや保存形式をUTF-8に統一してから出るようになりました。

SQL文は下記のように日本語となっております。
$str = "select 担務,部課 from group by id";

解決策がありましたらご教示下さい。

よろしくお願い致します。

Aベストアンサー

>SJISの時は問題なかったのですがcharsetや保存形式をUTF-8に統一してから出るようになりました。
SQL Serverの文字コードはUTF-8になっているということでしょうか。
また、PHPのマルチバイト文字関連の設定を詳しく教えてください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング