- PR -

JSP←→DB間での文字化け

1
投稿者投稿内容
ぴろ
常連さん
会議室デビュー日: 2002/12/12
投稿数: 26
投稿日時: 2002-12-24 05:41
こんにちは。依然、PostgreSQLのDBの利用時に文字化けが起こるという書き込みをさせて頂きました。あの後、色々試してみたのですが、やはり原因を突き止められず、思いあまってPostgreSQLからAccess2000へ逃げました・・・
ところが、やはりJSP→Access2000へデータ登録時文字化けが起こってしまうようなのです。文字コードを変換した後、DBへ登録など色々試してみてはいるのですが、原因がつかめません。もしかしたら、Access2000の場合、記述方法が異なるのかもしれないと思い、みなさんにお聞きしました。何か知っていらっしゃる方がおりましたら、ご教授願いたいです。よろしくお願いいたします。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-12-24 09:50
「〜」の話や、機種依存文字の話なら、「Shift_JIS Windows-31J Java」で検索してみましょう。
黒獅子
会議室デビュー日: 2002/10/16
投稿数: 17
投稿日時: 2002-12-24 14:23
こんにちは。
前回の書き込みを拝見していないので、的外れかもしれませんが..。

[MS-Windowsの場合](TomcatとWindows版PostgreSQL又はMS-Access2000を使用)
・JSPのヘッダ
<%@ page contentType="text/html;charset=Shift_JIS" %>

・コード変換部分の例
koumoku = new String(koumoku.getBytes("8859_1"), "JISAutoDetect");

[Linux(RedHat)の場合](TomcatとPostgreSQL)
・JSPのヘッダ
<%@ page contentType="text/html;charset=x-euc-jp" %>

・コード変換部分の例
koumoku = new String(koumoku.getBytes("8859_1"), "EUC_JP");

a)PostgreSQLのデータベースはEUC_JPで作成すること(デフォルトは「SQL_ASCII」)
b)コード変換に「JISAutoDetect」は使用しないこと
 (「JISAutoDetect」は完全に誤りなく変換できるとは限らないそうです。)


これで文字化けは起きていないのですが、こんな単純なことではないのかもしれませんね。
もしかしたらWindows環境でも「JISAutoDetect」は使用しない方が良いのかもしれ
ませんが、今までの経験では文字化けはありませんでした。

MS-Access2000への接続は、JDBC-ODBCブリッジドライバを使用し、PostgreSQLでは
ネイティブドライバ(だと思います)を使用しています。
JSPの記述に関して異なる点は上記の部分くらいで、他に特別意識している部分は
無いように思います。

Webブラウザで見たときに文字化けする文字と正常に表示される文字が混在する
場合は、エンコーディングが統一されていない可能性が高いと思います。
(JSPに直接書かれている部分はShift_JISで、データベースから取得した部分はEUCなど、
もしくはコード変換されずにUnicodeのままだとか)
あとはデータベースの文字コードに合わせたコード変換をして書き込んでいるか
でしょうか。

私の拙い経験では参考にならないかもしれませんが....。
ぴろ
常連さん
会議室デビュー日: 2002/12/12
投稿数: 26
投稿日時: 2002-12-26 14:00
こんにちは。ぴろです。
>黒獅子さん
いえいえ。お答えくださっただけでもありがたいです。
ちなみに、私は前者の「MS−Windowsの場合」に当てはまるのですが、
この方法でもだめなようでした。思うに、tomcatがきちんと日本語を変換して
DBへ送れているのかがそもそも怪しいと思い始めた次第です。
とりあえず、さきに進まなければいけないため、今回は半角英数字でいくことにします。
みなさま、どうもありがとうございました。

追伸:
Access2000っていうのは、どうもupdateの構文、違うみたいですね。一生懸命探してるんですけどなかなか。。。もし知ってる方がいらっしゃいましたら、教えていただきたいと思っています。
1

スキルアップ/キャリアアップ(JOB@IT)