ありがとうジョン・スキート!
はい。宣言中に文字列をエンコードしないという間違いを犯しました。
私の問題は、DB2 に保存されているデータを取得し、それを日本語に変換して、Web ページで編集できるようにすることです。結果セットから dbRemarks を取得しています。私は自分の投稿で別のことを見逃していました:
挿入中に、次のようなテキストに変換しています。
String text = (String) textConverter.toObject(b);
PreparedStatement prepareStatementUpdate = connection.prepareStatement(updateSql);
prepareStatementUpdate.setString(1, text);
int count = prepareStatementUpdate.executeUpdate();
次のコードを使用して、取得して明確に表示できます。
String selectSQL = "SELECT remarks FROM empTable WHERE emp_id = ? AND dep_id=? AND join_date='2013-11-15' ";
prepareStatement = connection.prepareStatement(selectSQL);
prepareStatement.setInt(1, 1);
prepareStatement.setString(2, 1);
ResultSet resultSet = prepareStatement.executeQuery();
while ( resultSet.next() ) {
byte[] bytedata = resultSet.getBytes( "remarks" );
AS400Text textConverter2 = new AS400Text(bytedata.length, 5035,sys);
String javaText = (String) textConverter2.toObject(bytedata);
System.out.println("Remarks after conversion to AS400Text :"+javaText);
}
JDBC では正常に動作していますが、JPA で動作するには、Web ページで編集するか、テーブルに保存するために文字列に変換する必要があります。だから、私はこの方法を試しましたが、成功できませんでした:
String remarks = resultSet.getString( "remarks" );
byte[] bytedata = remarks.getBytes();
AS400Text textConverter2 = new AS400Text(bytedata.length, 5035,sys);
String javaText = (String) textConverter2.toObject(bytedata);
System.out.println("Remarks after conversion to AS400Text :"+javaText);