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);
}
https://stackoverflow.com/a/31113436/5471574あなたの質問に答えますか? –
私はそれを試しましたが、残念ながらそれは私の問題を解決していませんでした。 – Skalozub
JavaソースファイルのエンコーディングはUTF-8ですか? –