关于escape和encodeURI:
在使用url直接提交中文内容时,如下:
var content = '这是测试内容'
var url = '/encodeTest.do?content='+escape(content)
document.form1.method = 'post'
document.form1.action = url
document.form1.submit()
采用以上方式提交内容时,服务器端(Java)获取内容:
String content = request.getParameter('content')
此处会有异常抛出:
Code
引发该异常的原因在于使用了escapse(为什么是它呢?不太清楚)
解决方案:
var content = '这是测试内容'
var url = '/encodeTest.do?content='+encodeURI(encodeURI(content))
//注意,这里的encodeURI连续使用了两次
document.form1.method = 'post'
document.form1.action = url
document.form1.submit()
在服务器端获取内容时,则需要使用java.net.URLDecoder来解码了。注意解码时使用的编码!根据具体的应用还要做不同的调整。如果之前使用了request.setCharacterEncoding("GBK")对编码进行设置,那么在解码的时候,可能要将编码重新转为UTF-8:request.setCharacterEncoding("UTF-8");
String content= java.net.URLDecoder.decode(note,"UTF-8");