tôi hướng dẫn URL của tôi để gửi một yêu cầu Ajax như thế:UTF-8 URL Giải mã/mã hóa
url += '/' + something + '/' + id;
var response;
$.ajax({
async : false,
type: 'DELETE',
url: url,
...
My removeId
là một biến bao gồm tự UTF-8. Tôi sẽ xử lý biến đó ở bên cạnh Java như thế:
@RequestMapping(value = "/something/{id}", method = RequestMethod.DELETE)
public void myMethod(HttpServletResponse response, @PathVariable String id) {
...
Tuy nhiên id
biến ở bên cạnh Java là khác biệt so với bản gốc của nó bởi vì UTF-8 ký tự thay đổi những điều kỳ lạ.
Làm cách nào để gửi các ký tự UTF-8 từ phía JavaScript và chuyển đổi nó một lần nữa ở phía Java của tôi (Spring 3 với REST, máy chủ web của tôi là Tomcat 7)?
PS 1: Thậm chí tôi không sử dụng encodeUriComponent
có vẻ như URL của tôi đang tự mã hóa?
PS 2: Để làm cho câu hỏi rõ ràng hơn:
i.e. my id variable is araç and sent URL is: localhost:8080/sdfasf/ara%C3%A7
Khi tôi thấy rằng biến id có giá trị:
araç
thay vì:
ara%C3%A7
Liệu Spring (hoặc Tomcat) tự động làm điều đó? Có cách nào để giải mã nó tự động khi nói để điều khiển như là một biến đường dẫn (tôi muốn nói mà không cần viết bất cứ điều gì như như:
URLDecoder.decode(id,"UTF-8");
nó sẽ được chuyển đổi tự động)
cảm ơn câu trả lời của bạn và bỏ phiếu. Tôi chỉ muốn chắc chắn. Tôi sử dụng Spring và đã cấu hình (không làm bất cứ điều gì với Tomcat) và tôi nghĩ rằng tôi đã giải quyết được vấn đề của mình. Tôi có bỏ lỡ một cái gì đó (tôi có nghĩa là có lẽ tôi đã không giải quyết vấn đề chính xác và một số nhân vật sẽ cung cấp cho lỗi quá?) Và có bất kỳ ví dụ về cách sử dụng request.setCharacterEncoding? – kamaci
@kamaci: Tôi không nhận ra đó là câu trả lời của bạn và nó đã giải quyết được vấn đề của bạn khi tôi đăng câu trả lời của tôi. Việc gọi 'setCharacterEncoding' không hoạt động đối với các tham số đường dẫn với thùng chứa OC4j của oracle, có thể nó hoạt động với tomcat. Mặc dù mâu thuẫn với một số câu trả lời cho các câu hỏi tương tự như http://stackoverflow.com/questions/8079152/charset-filter-causing-issue-in-parsing-utf-8-characters/8079547#8079547 hoặc http://stackoverflow.com/câu hỏi/2630748/how-to-enable-reading-phi-ascii-characters-in-servlets/2630977 # 2630977 –
cảm ơn câu trả lời chi tiết của bạn. – kamaci