我試圖通過SAP連接在SAP Java實例(SAP Netweaver 7.3.1)上保存俄語文本。我使用的下一個Java代碼來獲得JDBC連接並保存數據:通過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();
從查詢的數據插入,但俄文本沒有正確保存。
通常建議將UTF-8參數添加到DataSource URL以解決問題。我在數據源URL中添加了使用Unicode和characterEncoding參數:
jdbc:oracle:thin:@db_inst:1521:RR0?useUnicode=true&characterEncoding=UTF-8
但它沒有解決問題。如果我使用參數,則根本無法建立與DataBase的連接。同時連接工作正常,但沒有參數(但俄羅斯符號未正確保存)
DataBase看起來是爲保存俄文文本而設置的,因爲我可以使用其他工具保存文本(例如查詢來自Netweaver Developer Studio)。
Oracle的版本是 Oracle數據庫12c的企業版發行12.1.0.2.0 - 64位生產0
的文章將從HTML頁面是UTF-8編碼讀取。這些值使用JavaScript讀取並傳遞到Java servlet中,該servlet將文本存儲在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的編碼嗎? –