- - PR -
PostgresでJDBCを使用してSQL_ASCIIのDBに日本語を登録したい。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-22 18:31
はじめまして、初めて投稿させていただきます。
環境 Red Hat Linux release 9 (Shrike) j2sdk1.4.2_07 jakarta-tomcat-5.0.28 PostgreSQL7.3.2 を使用しています。 この環境で、エンコーディングがSQL_ASCIIのPostgresのDBにJDBC経由で日本語を登録したいのですが、うまく登録できません。 いろいろ、調べたのですが情報が、ほとんどありませんでした。 普通なら、DBのエンコーディングをEUC-JPにするべきだと思うのですが。 既存のシステムがSQL_ASCIIを使用して作られてしまっているので変更できません。 既存のシステムは、Servletを使用せずにCGI経由で登録を行っていたため問題がありませんでした。 どなたか、JDBC経由でSQL_ASCIIのDBに日本語を登録する方法を、ご存じの方おられないでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2005-04-23 04:12
一口に日本語といっても、シフトJISとか日本語EUCとか、いろいろなエンコーディングがあるのですが、UTF-8なら何も考えずにいけるはずです。
シフトJISとか日本語EUCで格納したければ、JDBCドライバのソースをいじるしかないと思います。 ここらへんはJDBCドライバのソースを入手して、org.postgresql.jdbc1.AbstractJdbc1Connection#openConnection(String, int, Properties, String, String, Driver)を見ると分かってきます。 | ||||
|
投稿日時: 2005-04-25 18:31
お返事、ありがとうございます。
返信が、遅くなってしまってすいません。 現在、試しているのはUTF-8です。 Servletにて request.setCharacterEncoding("UTF-8"); でリクエストを取得しています。 取得したリクエストを元に、 query文字列を作成して下記のように実行しています。 Statement stmt = con.createStatement(); int NumOfUp = stmt.executeUpdate(query); stmt.close(); このやり方ですと、文字化けが起こってしまいます。 query文字列に String newQuery = new String(query.getBytes("UTF-8"), "8859_1"); しても、文字化けしてしまいました。 なにか、考えられる原因はあるでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2005-04-25 18:54
そのやり方でいいはずなんですが、文字化けはどのように確認していますか? | ||||
|
投稿日時: 2005-04-25 19:09
文字化けは、Tera Termにて確認しています。 Tera Termのコンソールにて正常に出力されることを期待しているのですが。 JDBCにてデータを取得して response.setCharacterEncoding("UTF-8"); をして、画面に表示すると正常に見れるのですが。 CGIから、登録されたものは正常に見えています。 もしかしたら、何か勘違いをしているかもしれませんが。 よろしくお願いします。 | ||||
|
投稿日時: 2005-04-25 19:25
たびたび、すいません。
いま、確認したのですがTera Termのrecieve、transmitのプロパティがEUCになっていました。 ということは・・・ SQL_ASCIIにEUC-JPのエンコーディングの文字列を登録すればよいということでしょうか? そうなると、JDBCドライバを修正しなくては、ならないんだと思うのですが。 PostgreSQL7.3.2のJDBCのソースというのは、どこで手に入るのでしょうか? Postgresのサイトで探したのですが、ソースがありませんでした。 知っていたら、教えていただけますか?よろしくお願いします。 | ||||
|
投稿日時: 2005-04-25 19:46
たぶんデータベースには正しくUTF-8で登録されています。
なので、文字化けはPostgreSQLやJavaの問題ではなく、ターミナルの問題です。 TeraTermで文字化けせずに参照できることが目的ですか? それならUTF-8に対応したターミナルソフトを使って下さい。 | ||||
|
投稿日時: 2005-04-25 19:48
あれ? もしかしてSQL_ASCIIのデータベースに日本語データをEUC-JPで保存したいというご要望ですか?
だったらそれは無理です。JDBCドライバをいじらないといけません。 JDBCドライバのソースはPostgreSQL本体のソースにくっついてきます。 |