2017-06-29 13 views
0

SAP Javaインスタンス(SAP Netweaver 7.3.1)でJDBC接続経由でロシア語のテキストを保存しようとしています。私は、JDBC接続を取得し、データを保存するために、次のJavaコードを使用しています:JDBC経由のロシア語記号(SAP Netweaver 7.3.1、Oracle 12c)

InitialContext ctx = new InitialContext();  
    DataSource ds = (DataSource) ctx.lookup("jdbc/DS_Test"); 
    Connection conn = ds.getConnection(); 
    PreparedStatement stmt = conn.prepareStatement("INSERT INTO Z_TEST_TAB VALUES(?, ?, ?)"); 
    stmt.setString(1, "KEY_LINE"); 
    stmt.setString(2, "Текст2"); 
    stmt.setString(3, "Текст3"); 
    stmt.execute(); 
    stmt.close();  

クエリからのデータが挿入されていますが、ロシア語のテキストが正しく保存されません。

通常、問題を解決するために、DataSource URLにUTF-8パラメータを追加することをお勧めします。私は、DataSource URLにuseUnicodeとcharacterEncodingパラメータを追加しました:

jdbc:oracle:thin:@db_inst:1521:RR0?useUnicode=true&characterEncoding=UTF-8 

しかし、この問題は解決していません。パラメータを使用すると、DataBaseへの接続を確立できません。同時に、接続は正常に動作します(ただし、ロシアのシンボルは正しく保存されません)。

ロシアのテキストを保存するように設定されているようですが、別のツール(例:クエリNetweaver Developer Studioから)。

Oracleバージョンは のOracle Database 12cのEnterprise Editionのリリース12.1.0.2.0である - 64ビットの生産0

テキストはUTF-8でエンコードされたHTMLページから読み込まれます。値はjavascriptを使用して読み取られ、Javaサーブレットに渡されます。Javaサーブレットは、Oracle DataBaseにテキストを格納します。

function save() { 
    var texts = document.querySelectorAll('.text_fields'); 
    var text1 = texts[0].textContent; 
    var text2 = texts[1].textContent; 
    var text3 = texts[2].textContent; 
    var body = 'TEXT1='+encodeURIComponent(text1)+'&TEXT2='+encodeURIComponent(text2)+'&TEXT3='+encodeURIComponent(text3); 

    var xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("POST", "DBClassSave", true); 
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xmlHttp.onload = function() { 
    if (xmlHttp.readyState == 4) { 
     if (xmlHttp.status == 200) { 
      alert("Data have been saved"); 
      location.reload();    
     } else { 
      alert("An exception has been occurred: "+xmlHttp.status+xmlHttp.responseText); 
     } 
    } 
    }  
xmlHttp.send(body);  
} 
+0

https://stackoverflow.com/a/31113436/5471574あなたの質問に答えますか? –

+0

私はそれを試しましたが、残念ながらそれは私の問題を解決していませんでした。 – Skalozub

+0

JavaソースファイルのエンコーディングはUTF-8ですか? –

答えて

1

コメントで説明したように、問題はデータパイプに沿った文字エンコードの破損です。

次回はduckieを使ってみてください;)

関連する問題