2017-01-17 17 views
1

私のような、OracleテーブルにHTTPリクエストを表す文字列を挿入したい:ここOracleテーブルに特殊文字を保存する方法は?

a=5&b=hello&date=2016/01/01 

私のJavaコード:以下のように

//HttpServletRequest request comes in to the server 
String url = request.toString().substring(beginIndex, endIndex); 
stmt = conn.prepareStatement("INSERT INTO table (URL) VALUES (?)"); 
stmt.setString(1, url); 
stmt.executeQuery(); 
stmt.close(); 

現在、この文字列が自動的に保存されています。

a=5&b=hello&date=2016%2F12%2F31 

つまり、UTF-8でエンコードされた文字列です。

URLエンコードされたフォームではなく、そのままの状態で保存する方法はありますか?

文字列はエンコードされたURLであるおかげ

+1

request.toStringは()の変換をしなかったことをあなたは確か?これはデフォルトのオラクル文字セットの完全に有効な文字セットです。 – OldProgrammer

+3

なぜあなたは 'HttpServletRequest'で' toString() 'を呼び出していますか?それは私にとっては悪い考えです。 (また、 "UTF-8エンコード"は "URLエンコード"と同じではありません)。これはデータベース側とは関係がないようです。私はあなたが既にそこに '%2F'を持っているのを見つけるだろうと思う。 –

+0

@JonSkeet要求がHttpServletRequestオブジェクトであり、URLの一部のみが必要なため、toString()を呼び出しています – Fab

答えて

2

は、データベースに渡す前に、それをデコードするURLDecoder.decode(urlstring, encoding)を使用することができます。

String url = URLDecoder.decode(
       request.toString().substring(beginIndex, endIndex), 
       "UTF-8" 
      ); 
関連する問題