![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- C言語・C++・C# ハミング符号の解読について 1 2023/05/06 00:20
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- フリーソフト BIOS.binをバイナリエディタで開くと ascii 変換しても、暗号化されていて何か分からない文 6 2022/07/11 03:34
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
excel vba 時間計算と条件分岐...
-
DateTimePickerに値を入れたい...
-
long型に値を代入したい。
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
JSP内でfor文を使用し、出力結...
-
数値の出力
-
【Excel VBA】繰り返し処理がで...
-
実行シェルからCOBOLへパラメー...
-
テキストボックスの数値チェック
-
StringBuilderをStringに代入
-
wsprintf関数の使い方について
-
char型での演算子
-
暗号化文字列を英数字のみにしたい
-
EM_GETSELメッセージについて。
-
(Javaで)第1コマンドライン...
-
DOSバッチで変数の値を変数名に...
-
ResultSetの内部構造(Java)
-
javaのCSVデータ読込についてです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
DateTimePickerに値を入れたい...
-
wsprintf関数の使い方について
-
Stringクラスの変数の格納アド...
-
BCD形式で時刻を!
-
javaのCSVデータ読込についてです
-
このプログラミング誰か教えて...
-
Evaluate()に文字列の形式の数...
-
このプログラミング誰か教えて...
-
JSPでHashMap・配列の変数の値...
-
特定の文字列を複数抜き出した...
-
matchesを否定文として使う方法...
-
DOSバッチで変数の値を変数名に...
-
Javaの問題なのですが、「3文字...
-
excel vba 時間計算と条件分岐...
-
実行シェルからCOBOLへパラメー...
-
日付や時刻の"01"を" 1"に変換...
-
VB6,論理演算子Orの使い方がわ...
-
char型での演算子
おすすめ情報