Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SpringMVC中使用JavaScript获得对JSP的Unicode响应_Java_Javascript_Spring_Jsp_Unicode - Fatal编程技术网

如何在SpringMVC中使用JavaScript获得对JSP的Unicode响应

如何在SpringMVC中使用JavaScript获得对JSP的Unicode响应,java,javascript,spring,jsp,unicode,Java,Javascript,Spring,Jsp,Unicode,我想使用javascript发送一个Unicode到JSP页面。我浏览了互联网,但仍然找不到答案。它总是向我显示类似于“??”的东西。谁能告诉我答案吗 这是我在控制器中的方法 @RequestMapping(value = "/conv", method = RequestMethod.POST) public @ResponseBody String add(@RequestParam(value = "input", required = true) String input) throws

我想使用javascript发送一个Unicode到JSP页面。我浏览了互联网,但仍然找不到答案。它总是向我显示类似于“??”的东西。谁能告诉我答案吗

这是我在控制器中的方法

@RequestMapping(value = "/conv", method = RequestMethod.POST)
public @ResponseBody
String add(@RequestParam(value = "input", required = true) String input) throws    UnsupportedEncodingException {
    String result = Run.getTranslation(input);
    log.info(result);
    byte[] bytesInUTF8 = result.getBytes("UTF-8"); 
    String stringUsingUTF8 = new String(bytesInUTF8, "UTF-8"); 
    return stringUsingUTF8;
}
这是我的JavaScript代码(test.js)

这是我的JSP页面

<Doctype html>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <script src="<c:url value="/resources/js/jquery.min.js"/>"></script>
   <script src="<c:url value="/resources/js/test.js"/>"></script>
<!-- You can add  resources to page like above, .css and .js should be in resources  folder  -->
</head>
<body>
    <h1>Translator</h1>
    <h4>Input</h4>
    <textarea id="in" rows="5" cols="100"></textarea>
    <br>
    <h4>Output</h4>
    <textarea id="out" rows="5" cols="100"></textarea>
    <br><br>
    <button id="clear"> Clear</button> &nbsp;&nbsp;<button id="submit"> Convert</button>    
</body>
</html>

翻译
输入

输出

清除转换
我认为您应该在JSP中添加以下内容:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

这里有一些关于这方面的很酷的读物:

我认为您应该在JSP中添加以下内容:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

这里有一些关于这方面的很酷的读物:

这将获取已翻译的Unicode字符串,使用UTF-8编码将其编码为字节,然后使用相同的编码将其解码回字符串。这是一个往返过程,
stringUsingUTF8
将始终与
result
完全相同,因此您可以删除此项

return stringUsingUTF8;
Spring
@ResponseBody
方法返回的字符串使用Servlet的默认编码进行编码,以便发送到浏览器。XMLHttpRequest默认使用UTF-8,但由于Servlet很旧而且很糟糕,所以编码不是UTF-8而是ISO-8859-1,这几乎不是您想要的

要解决此问题,可以设置自定义的
注释方法HandlerAdapter

请注意,您的输入也使用Servlet默认值ISO-8859-1进行解码。如果需要接受非ASCII输入和输出,则需要在web.xml中设置
CharacterEncodingFilter
。(注意,多部分POST表单和GET表单还有更多的复杂性。Servlet中的字符编码确实是一件非常令人伤心的事情。)

这应该是
encodeURIComponent(input)
,或者只是
data:{input:input}
,让jQuery为您处理这些。否则像
&
%
这样的字符将中断

这将获取已翻译的Unicode字符串,使用UTF-8编码将其编码为字节,然后使用相同的编码将其解码回字符串。这是一个往返过程,
stringUsingUTF8
将始终与
result
完全相同,因此您可以删除此项

return stringUsingUTF8;
Spring
@ResponseBody
方法返回的字符串使用Servlet的默认编码进行编码,以便发送到浏览器。XMLHttpRequest默认使用UTF-8,但由于Servlet很旧而且很糟糕,所以编码不是UTF-8而是ISO-8859-1,这几乎不是您想要的

要解决此问题,可以设置自定义的
注释方法HandlerAdapter

请注意,您的输入也使用Servlet默认值ISO-8859-1进行解码。如果需要接受非ASCII输入和输出,则需要在web.xml中设置
CharacterEncodingFilter
。(注意,多部分POST表单和GET表单还有更多的复杂性。Servlet中的字符编码确实是一件非常令人伤心的事情。)


这应该是
encodeURIComponent(input)
,或者只是
data:{input:input}
,让jQuery为您处理这些。否则,像
&
%
这样的字符将断开。

您是否尝试过
对您的值进行编码。你能告诉我怎么做吗。因为我是这方面的新手。你有没有尝试过
encodeURIComponent
你的价值观?还是没有。你能告诉我怎么做吗。因为我是这项工作的新手,它向我显示了一个错误“服务器遇到了一个内部错误(),阻止了它完成这个请求”,我必须在Tomcat或其他地方更改任何配置吗?这是我第一次在我的应用程序中使用Unicode。内部错误(HTTP 500)的根本原因应该在Tomcat的stdout/catalina.out日志中。它向我显示错误“服务器遇到了一个内部错误(),使它无法满足此请求”我是否必须更改Tomcat或其他地方的任何配置?这是我第一次在应用程序中使用Unicode。内部错误(HTTP 500)的根本原因应该在Tomcat的stdout/catalina.out日志中。
data : "input=" +input,