0

FindEl(string myel)utf-8文字列パラメータを受け入れるメソッドを使用したJavaのWebサービスがあります

selectクエリは、この文字列で始まるすべての要素を検索する必要があります。これがJavaのコードです-私のWebサービス
の場合public class locselall {

public String FindEl(String myel ) throws ClassNotFoundException 
{
//
    String selectQuery = "select biz_subject from pl_biz WHERE biz_subject ILIKE '"+ myel + "%'";
//get rows 
    }

また、ブラウザに入力してWebサービスをテストし、次の項目を選択しても問題はありません。

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>

ご覧のとおり、URLのアラートがあり、Webサービスをテストするためにブラウザーに入力したURLとまったく同じですが、サーバーからの応答にはレコードが選択されていません3


問題は、変数newstrがutf-8(キリル文字)文字を保持していて、サーバーに適切に送信されず、その結果、レコードを選択できないことだと思います。

私が試したこと

  1. charset =utf-8のメタタグを追加しました

なし

  1. 彼の問題は私のTomcatサーバーにある可能性があることを読み、追加しました

server.xmlファイルのURIEncoding="utf-8"

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               URIEncoding="UTF-8"/>

まだ何もありません

前もって感謝します

4

1 に答える 1

1

encodeURIComponent送信されたURLで使用してみてください。ラテンアルファベット文字で機能したこの問題を以前に見たのを覚えているようですが、キリル文字は失敗しました。

var url = "http://localhost:9091/locselall/services/locselall/FindEl?myel=" + encodeURIComponent(newstr);
于 2013-02-03T11:54:46.657 に答える