Java 通过JDBC的俄语符号(SAP Netweaver 7.3.1,Oracle 12c)
我正在尝试通过SAP Java实例(SAP Netweaver 7.3.1)上的JDBC connect保存俄语文本。我正在使用下一个Java代码获取JDBC连接并保存数据:Java 通过JDBC的俄语符号(SAP Netweaver 7.3.1,Oracle 12c),java,oracle,jdbc,utf-8,sap,Java,Oracle,Jdbc,Utf 8,Sap,我正在尝试通过SAP Java实例(SAP Netweaver 7.3.1)上的JDBC connect保存俄语文本。我正在使用下一个Java代码获取JDBC连接并保存数据: InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("jdbc/DS_Test"); Connection conn = ds.getConnection(); Pr
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参数添加到数据源URL以解决此问题。我已将useUnicode和characterEncoding参数添加到数据源URL:
jdbc:oracle:thin:@db_inst:1521:RR0?useUnicode=true&characterEncoding=UTF-8
但这并没有解决问题。如果使用参数,则根本无法建立到数据库的连接。同时,在没有参数的情况下,连接工作正常(但俄文符号未正确保存)
数据库看起来是为保存俄语文本而设置的,因为我可以使用其他工具保存文本(例如来自Netweaver Developer Studio的查询)
oracle版本是
Oracle数据库12c企业版12.1.0.2.0版-64位生产0
文本从UTF-8编码的HTML页面读取。使用javascript读取这些值,并将其传递到JavaServlet,JavaServlet将文本存储在Oracle数据库中
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);
}
正如评论中所讨论的,问题在于数据管道上的字符编码损坏
下次尝试使用;) 回答您的问题?我已经尝试过了,但不幸的是,它没有解决我的问题。Java源文件的编码是UTF-8吗?我从html页面获取要存储的文本。html页面的字符集设置为UTF-8。您是否将UTF-8作为Java中的字符集来读取html?