如何通过http get发送日文文本到后端Java代码?

时间:2016-06-13 05:07:54

标签: java encoding character-encoding

我想通过http get request发送を伴う出力となって来后端java代码。 我的来电网址为http://localhost:8080/test/getID?id=%E3%82%92%E4%BC%B4%E3%81%86%E5%87%BA%E5%8A%9B%E3%81%A8%E3%81%AA%E3%81%A3%E3%81%A6

Java代码:

@RequestMapping(value = "/getCaseId")
    public ModelAndView showCaseId(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
        String msg = request.getParameter("id");
        System.out.println("URL:"+msg);
        return new ModelAndView("showID", "idList", null);
    }

上面的代码打印网址:ãä¼'ãåºåãããããããããã€。 那么我需要做些什么改变才能得到我从前端传递的确切日文文本。

3 个答案:

答案 0 :(得分:0)

如果使用eclipse IDE,则需要检查文本文件编码。请查看下图。enter image description here

答案 1 :(得分:0)

尝试将msg行更改为:

String msg = new String(
    request.getParameter("id").getBytes(StandardCharsets.ISO_8859_1),
    StandardCharsets.UTF_8
);

如果这样可行,则意味着您的应用程序服务器(Tomcat?jetty?)未正确配置以处理URL中的UTF-8。

答案 2 :(得分:0)

问题是提交的查询字符串在进入服务器端脚本的过程中变得很残缺,因为getParameter()使用的是ISO-8559-1而不是UTF-8。

所以我修改了我的代码如下,现在它的工作

@RequestMapping(value = "/getCaseId")
    public ModelAndView showCaseId(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
        String msg = new String(request.getParameter("id").getBytes("iso-8859-1"), "UTF-8")
        System.out.println("URL:"+msg);
        return new ModelAndView("showID", "idList", null);
    }

我在http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__lxgr-hi_i_am_havi.html找到了这个解决方案。