javaを介していくつかの特殊文字をoracleテーブルに挿入してから、再度取得しようとしました。 以下は私が試したコードです。Java特殊文字エンコーディングの問題
String s=new String("yesterday"+"\u2019"+"s");
...
statement.executeUpdate("INSERT into test1 values ('"+s+"')");
ResultSet rs=statement.executeQuery("select * from test1");
while (rs.next()) {
System.out.println(new String(rs.getString(1).getBytes("UTF-8"),"UTF-8"));
}
...
さて、私はコマンドラインの実行を介して出力を確認しようとすると、それは常に特殊文字が表示されます。yesterday’s
私の質問は:さえエンコーディングを使用した後、それが期待される結果を示していない理由。すなわちyesterday’s
。上記のコードが正しくないか、何らかの変更が必要ですか?
PS: - JDK1.6
-
オラクル:コマンドラインから実行された場合の日食では、コードはyesterday’s
を引き起こすかもしれないが、それは私が使用していますyesterday’s
を示しています。 11.1.0.6.0
- NLS_DATABASE_PARAMETERS:NLS_CHARACTERSET WE8MSWIN1252
--Windows
編集:
u2019 \:これは私がこれだけの文字を探していますRIGHT SINGLE QUOTATION MARK &です。
yesterday's
SQLクエリで連結を使用することはありません。 [prepared statements](http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)を使用してください。運転手にすべての汚れた作業をさせてください。 – vsminkov
提案のための@vsminkovは、実際のコードでは使用しません。 –
Windowsの場合は?あなたは、Javaが信じるよりも、おそらくコンソールに別のエンコーディングを設定しているでしょう( 'chcp'はあなたの友人です)。しかし、この場合、単にprintln '\ u2019'も問題を再現するべきです。 – mihi