我教我的URL發送一個Ajax請求這樣的:UTF-8 URL解碼/編碼
url += '/' + something + '/' + id;
var response;
$.ajax({
async : false,
type: 'DELETE',
url: url,
...
我removeId
是包括UTF-8字符的變量。我會處理該變量在Java方面那樣:在Java方面
@RequestMapping(value = "/something/{id}", method = RequestMethod.DELETE)
public void myMethod(HttpServletResponse response, @PathVariable String id) {
...
然而id
變量是從原來的不同,因爲UTF-8字符更改奇怪的事情。
如何從JavaScript端發送UTF-8字符並在Java端再次轉換它(Spring 3 with REST,我的Web服務器是Tomcat 7)?
PS 1:即使我不使用encodeUriComponent
它似乎是我的URL編碼本身?
PS 2:爲了使問題更加清晰:
i.e. my id variable is araç and sent URL is: localhost:8080/sdfasf/ara%C3%A7
當我看到那個id變量有值:
araç
代替:
ara%C3%A7
不Spring(或Tomcat)自動執行它?有沒有辦法對它進行解碼時自動談到控制器作爲路徑變量(我的意思是不寫任何東西像:
URLDecoder.decode(id,"UTF-8");
它會自動轉換)
感謝您的回答並投票。我只是想確定。我使用Spring並做了配置(對Tomcat沒有做任何事情),我認爲我解決了我的問題。我錯過了什麼(我的意思是也許我沒有完全解決問題,有些角色也會出錯?)並且有沒有關於如何使用request.setCharacterEncoding的示例? – kamaci
@kamaci:我沒有意識到這是你的答案,當我發佈我的答案時,它已經解決了你的問題。調用'setCharacterEncoding'不能用於oracle的OC4j容器的路徑參數,也許它使用tomcat。雖然這與一些類似的問題的答案相矛盾,如http://stackoverflow.com/questions/8079152/charset-filter-causing-issue-in-parsing-utf-8-characters/8079547#8079547或http://stackoverflow.com/questions/2630748/how-to-enable-reading-non-ascii-characters-in-servlets/2630977#2630977 –
感謝您的詳細解答。 – kamaci