我试图向服务器发送一个ajax调用,读取用户的输入文本(是希伯来语,utf-8字符集),我使用了这样的方法。
my_url = some_url + textinput
my_url = encodeURI(my_url)
我看到的问题是,在 encodeURI
函数,希伯来语部分看起来是这样的。%D7%9E%D7%9C%D7%95%D7%9F
(这很好). 然后我使用jquery调用。
$.ajax({
url: search_url,
contentType: "application/json; charset=utf-8",
dataType: 'json',
error:errorData,
success:getSearchResults
});
我看到在服务器上,它看起来像是被重新编码了,每个"%"符号现在是%25(百分号的utf-8表示),我的希伯来语部分看起来是这样的:
%25D7%259E%25D7%259C%25D7%2595%25D7%259F
(每个"%"=> %25)
我找不到任何方法来克服这个问题,我希望你可以:-)
干杯,罗伊
我认为最好的选择是使用 data
属性中的 .ajax()
选项。我在这里模拟了一个版本。http:/jsfiddle.netnrabinowitznmZra1。
$.ajax({
url: '/search_results/',
data: { search: text },
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: $.noop
});
没有一个很好的方法让jQuery显示实际的URL请求,但如果你在Firebug这样的控制台中查看,你可以看到错误信息(因为这是一个假的URL)。
看起来它对希伯来语文本的编码是正确的,没有你所遇到的双重编码问题。