
javaのプログラムをEclipseでデバッグ中なのですが、
socket通信で取得したString型のデータをPostgreSQL(ver8.3)のtext型に
INSERTすると
org.postgresql.util.PSQLException: ERROR: insufficient data left in message
とエラーが発生してしまいます。
String型の変数infoに格納している文字列を
EclipseのWatchWindowで見ると以下の様な値になっています。
変数名
info "85E_ A B C t r a k "
※ "A B C t r a k "の部分だけフォントが異なる(ここだけ文字コード違う??)
試しにinfo変数の中身を
byte[] btext = info.getBytes();
でbyte[]型に格納してみたら。
以下の様な値になっていました。
変数名
btext
[0] 56 ← ASCIIコードの'8'
[1] 53 ← ASCIIコードの'5'
[2] 95 ← ASCIIコードの'_'
[3] 0 ← ?
[4] 65 ← ASCIIコードの'A'
[5] 0 ← ?
[6] 66 ← ASCIIコードの'B'
[7] 0 ← ?
[8] 67 ← ASCIIコードの'C'
[9] 0 ← ?
[10] 116 ← ASCIIコードの't'
[11] 0 ← ?
[12] 114 ← ASCIIコードの'r'
[13] 0 ← ?
[14] 97 ← ASCIIコードの'a'
[15] 0 ← ?
[16] 107 ← ASCIIコードの'k'
[17] 0 ← ?
となっています。。
この様な文字列をデータベースに格納するにはどうしたらよいのでしょうか?
ちなみにEcripseでWatchした際に変なフォントになっていない文字列がINSERT
できることは確認済です。
No.1ベストアンサー
- 回答日時:
詳しいことはわかりませんが、フィーリングでいうと、
エラーの原因は文字列のはずのデータに0x00が入っているからで、
一文字置きに0x00が入っているのはUnicode(UTF-16)のバイト列をASCII(もしくはASCII互換の文字コード)で解釈した状況に見えます。
あとJavaは確か文字列をUnicodeで扱っていた気がします。
回答有難う御座います。
まさにそんな感じなのです。問題は文字列に0x00が入っているからのようです。
で、これが部分的に0x00が入っているのですが可能であればこのままデータベースに
突っ込みたいと思っています。
このような場合はDB側で文字列として扱わない方がよいのでしょうか?
(文字列ではないとすると型をなににすればよかでしょか?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPでHashMap・配列の変数の値...
-
Javaを使って、string型の年月...
-
ダブルクォーテーションを含む...
-
JavaScriptの変数をjavaのメソ...
-
InputStream.read()でタイムア...
-
javaで質問です。 文字列2023/2...
-
JScrollPaneで、表示がおかしく...
-
JavaScriptを使ってロト6の当...
-
JavaScriptとVBScriptに関して
-
eclipseに記述したjavaファイル...
-
javaのコンパイルエラーについ...
-
ループ処理の際、最後だけ","を...
-
オブジェクトの中のプロパティ...
-
strutsでlist型の入力を行うには
-
StrutsでJSPからListを受け取り...
-
requestの値が削除されません…
-
VBAで配列の計算
-
System.err. printlnとSystem.o...
-
TextAreaでの文字の色
-
GetDIBits関数の使い方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wsprintf関数の使い方について
-
ダブルクォーテーションを含む...
-
JSPでHashMap・配列の変数の値...
-
C言語の変数(LSB)の合わせ込...
-
BCD形式で時刻を!
-
任意の変数が任意の値になった...
-
javaのCSVデータ読込についてです
-
matchesを否定文として使う方法...
-
PSQLExceptionが発生する
-
DateTimePickerに値を入れたい...
-
Evaluate()に文字列の形式の数...
-
excel vba 時間計算と条件分岐...
-
特定の文字列を複数抜き出した...
-
実行シェルからCOBOLへパラメー...
-
JSPでの計算結果表示
-
C# LinqでDateTime型の値を取得
-
VB6,論理演算子Orの使い方がわ...
-
結合した文字列をファイル名に...
-
日付や時刻の"01"を" 1"に変換...
-
Stringクラスの変数の格納アド...
おすすめ情報