我在java中使用方法FindEl(string myel)
获得了一个接受utf-8字符串paraeter的web服务
select查询应该找到以此字符串开头的所有元素
这是Java中的代码 - 用于我的Web服务
公共课程locselall
{
public String FindEl(String myel ) throws ClassNotFoundException
{
//
String selectQuery = "select biz_subject from pl_biz WHERE biz_subject ILIKE '"+ myel + "%'";
//get rows
}
当我输入浏览器来测试我的网络服务时我没有问题,我选择了:
http://localhost:9091/locselall/services/locselall/FindEl?myel=СИТ
它有效;
这是向服务器发送请求的html页面
html>
<head>
<script>
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
function triming()
{
var strInput= document.getElementById('txtInput').value;
// for example I enter "ШИФ " - utf 8 cahracters
var newstr = strInput.replace(/[^\u0400-\u04FF0-9]/gi, '');
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
//var xmlObj = xmlhttp.responseXML;
//var textXML = xmlObj.documentElement.firstChild.firstChild.nodeValue;
}
}
var url = "http://localhost:9091/locselall/services/locselall/FindEl?myel="+ newstr;
document.getElementById('pr').innerHTML = url;
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
</script>
</head>
<body>
<input type= "text" id="txtInput" />
<input type="button" id="btnSearch" onClick = "triming();"/>
<div id="pr"></div>
</body>
</html>
如您所见,我有一个网址提醒,它与我在浏览器中输入的用于测试我的网络服务的网址完全相同 - 但服务器的响应是没有选择记录3
我认为问题在于我的变量newstr拥有utf-8(cyrilic)字符串并且它没有正确发送到服务器,因此它无法选择任何记录!
我尝试了什么
没什么
server.xml文件中的URIEncoding =“utf-8”
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
仍然没有
提前致谢
答案 0 :(得分:1)
尝试在发送的网址上使用encodeURIComponent
。我似乎记得以前看过这个问题,它与拉丁字母字符有关,但西里尔字母失败了。
var url = "http://localhost:9091/locselall/services/locselall/FindEl?myel=" + encodeURIComponent(newstr);