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ランキング
-
ArrayListの要素数の上限
-
ダブルクォーテーションを含む...
-
Stringクラスの変数の格納アド...
-
特定の文字列を複数抜き出した...
-
matchesを否定文として使う方法...
-
DateTimePickerに値を入れたい...
-
このプログラミング誰か教えて...
-
このプログラミング誰か教えて...
-
Javaの問題なのですが、「3文字...
-
String str = "a\\\\b\\\\c";
-
DOSバッチで変数の値を変数名に...
-
【struts】<logic:iterate>で出...
-
日付や時刻の"01"を" 1"に変換...
-
テキストボックスに入力された...
-
WinInet.dllを利用したHttpQuer...
-
Request.formの値の初期化
-
テキストファイルを読み込んで...
-
JavaScriptの変数の値が消える!?
-
web系システムのテストについて
-
PSQLExceptionが発生する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
javaのCSVデータ読込についてです
-
wsprintf関数の使い方について
-
BCD形式で時刻を!
-
結合した文字列をファイル名に...
-
Evaluate()に文字列の形式の数...
-
C言語の変数(LSB)の合わせ込...
-
実行シェルからCOBOLへパラメー...
-
hiddenの値を消したくない!
-
VB6,論理演算子Orの使い方がわ...
-
DateTimePickerに値を入れたい...
-
char型での演算子
-
String str = "a\\\\b\\\\c";
-
Javaの問題なのですが、「3文字...
-
8桁整数を限りなく短い文字列に...
-
matchesを否定文として使う方法...
-
DOSバッチで変数の値を変数名に...
-
excel vba 時間計算と条件分岐...
おすすめ情報