- PR -

PostgreSQL8で〜が消える

投稿者投稿内容
しろくま
常連さん
会議室デビュー日: 2004/10/15
投稿数: 35
投稿日時: 2005-12-30 18:37
お世話になります、しろくまです。
画面より入力された文字列をDBに書き込む単純なものなのですが、
文字列中に含まれる〜が書き込まれません。
--------------
A〜B -> AB
--------------
のようになってしまいます。
文字化けの類かと思うのですが、PostgreSQLって消えてしまうのですか?
よろしくお願いします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-12-31 01:06
文字コードは何を指定しています?開発言語は何を使ってます?もしかしてまたUnicodeの文字コード割り当てがOSによって異なる問題の話なのかなぁと・・・。
ben
会議室デビュー日: 2005/12/31
投稿数: 1
投稿日時: 2005-12-31 13:46
お使いのOSはWindowsでしょうか?
WindowsであればUnicodeの規格の差によって似たような現象がオラクルで起こったことがありました。

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;JP286776

オラクルの場合は、オラクルがUnicode の標準規格である JIS X 0221 を利用しているのに対しWindowsがWindows2000 のコードページ 932 の規格を使っていることが原因で変換に差が生じ「〜」がうまく表示されませんでした。
解決策としては、オラクルが利用する文字コードを変更し、対応したと思います。
しろくま
常連さん
会議室デビュー日: 2004/10/15
投稿数: 35
投稿日時: 2006-01-01 16:42
お世話になります、しろくまです。
こちらの環境は、
Apache2.0.55 + Tomcat4.1.31でcharsetはShift_JIS
PostgreSQL8.0.3でENCODINGは'EUC_JP'
Redhat AS2.1
j2sdk1.4.2_09
Postgresql-jdbc-8.0-312
になります。
以前Oracleで動作していたものをPostgreSQLへ移行したいのですが、今回の症状になりました。
文字コードの違いにより?が表示されることはOracleの時は頻発していたのですが、消えてしまうことはありませんでした。
甕星さんの指摘されるような場合PostgreSQLでは、?ではなく消えてしまうのでしょうか。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-01 18:11
引用:

しろくまさんの書き込み (2006-01-01 16:42) より:

甕星さんの指摘されるような場合PostgreSQLでは、?ではなく消えてしまうのでしょうか。


文字化けによって ? になってしまうか、"表示できない文字" になってしまうかは、
その文字コード (もしかすると DBMS) 次第かもしれませんが、
とりあえず、調査を進めた方が良いでしょう。

示された情報の調査はされたんですか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
しろくま
常連さん
会議室デビュー日: 2004/10/15
投稿数: 35
投稿日時: 2006-01-03 22:30
お世話になります、しろくまです。

件名では消えると表現になっていますが、
DBから再度登録したデータを取得して1文字ずつ見ていっても
〜に該当するコードが登録されていない状態です。
文字化けによって表示されていないのではなく、書き込みの段階で
はじかれてしまっているのではないかと思ったのですが...


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-04 00:49
引用:

しろくまさんの書き込み (2006-01-03 22:30) より:

件名では消えると表現になっていますが、
DBから再度登録したデータを取得して1文字ずつ見ていっても
〜に該当するコードが登録されていない状態です。
文字化けによって表示されていないのではなく、書き込みの段階で
はじかれてしまっているのではないかと思ったのですが...


いつから思っておられたのか、存じませんが、

引用:

しろくまさんの書き込み (2005-12-30 18:37) より:

画面より入力された文字列をDBに書き込む単純なものなのですが、
文字列中に含まれる〜が書き込まれません。
(snip)
文字化けの類かと思うのですが、PostgreSQLって消えてしまうのですか?


と、しっかり書かれておられたかと思いますが...
その後の回答もそういう流れでしたし... (^^;)

閑話休題。

とりあえず、SQL コマンド自体が間違っているという可能性も無きにしも非ずですので、
是非、SQL コマンドをそのまま載せてください。

PostgreSQL でレコードが消える類は昔はありましたけど、
このタイミングで消えてしまう不具合は知りません。
単に最初から登録されていないだけなのではないかと思っております。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
しろくま
常連さん
会議室デビュー日: 2004/10/15
投稿数: 35
投稿日時: 2006-01-08 20:40
お世話になります、しろくまです。
ソースはこんな感じです。
コード:

String RegStmt = "INSERT INTO shpmst(no, nm) VALUES(?,?)";
DBConnectionBeans DBConnection = new DBConnectionBeans();

try{
DBConnection.open();
PreparedStatement stmt = DBConnection.con.prepareStatement(RegStmt);

stmt.setString(1,"1234567");
stmt.setString(2,"A〜B");
stmt.executeUpdate();
stmt.close();
DBConnection.close();

}catch(Exception e){ //例外処理
System.out.println("Error!" + e);
}




[ メッセージ編集済み 編集者: しろくま 編集日時 2006-01-08 20:41 ]

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