js创建form进行post提交,有中文内容变成乱码,怎么在前端解决该问题?

齿轮1 发布于 12/03 10:38
阅读 233
收藏 0

想用JavaScript创建form表单以post的方式进行页面跳转,而java后端语言默认接收编码是UTF-8,服务端容器是tomcat8.5,当然后端那边可以用new String(content.getBytes(“ISO-8859-1”),“utf-8”)搞定,但这样的解决方式,会导致需要post跳转页面的业务开发使用编码风格不统一,为了统一编码。所以更想在前端把这个问题解决掉。

 

以下是post页面跳转所使用的方式

 

	  postTo=function post(URL, PARAMS) {   //PARAMS 提交的对象
	      var temp = document.createElement("form"); 
	      temp.action = URL; 
	      temp.method = "post"; 
	      temp.style.display = "none"; 
	 
	      temp.setAttribute('accept-charset', 'utf-8'); //此方法没用

	      for (var x in PARAMS) { 
	        var opt = document.createElement("textarea"); 
	        opt.name = x; 
	        opt.value = PARAMS[x]; 
	        temp.appendChild(opt); 
	        } 
	      document.body.appendChild(temp); 
	      temp.submit(); return temp; 
	    };

 

如何解决?尽量能涵盖多个浏览器

 

 

 

加载中
0
亡灵序曲
亡灵序曲

有么有想过改整个页面的字符编码的编码为UTF-8

齿
齿轮1
怎么改?meta标签里的charset属性?那个早就设了,没用。另外这个js的function方法,是在某个js文件里。 还有<%@ page contentType="text/html;charset=UTF-8" %>这句话也设了,没用。
0
笑看风云雨雪
笑看风云雨雪

tomcat 设置URIEncoding="UTF-8" ?

齿
齿轮1
都说了啊,java后端那边已经默认是UTF-8了啊!ajax带中文的请求发上去都没乱码,用js创建form表单提交就有乱码,还得用ISO-8859-1转到UTF-8,我现在想要的是前端解决js创建表单提交中文乱码
0
小伯恩
小伯恩

<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>

先把你的页面改成utf-8 ,如果不能解决问题,请设置from 属性   accept-charset="UTF-8"   

 

 

小伯恩
小伯恩
回复 @齿轮1 : ......老铁,你这个态度...... 不好意思,打扰了
齿
齿轮1
meta标签 我早就设置过,没用,accept-charset ?你没搞错把?这可是在js创建的form表单, js定义变量,哪能用"-"这个符号? js怎么设置accept-charset啊?
0
kakai
kakai

var postform = document.getElementById('form');
if (document.charset) {
    document.charset = 'utf-8'; // IE不能识别form.accept-charset
}
else {
    postform.setAttribute('accept-charset', 'utf-8'); //不能够解析document.charset的浏览器,用form.accept-charset参数
}

齿
齿轮1
你好,你这个我看过,我就是参照这个ifelse代码的else部分写的 temp.setAttribute('accept-charset', 'utf-8');, 页面中有展示。 我测试的时候没有用IE浏览器,用的是谷歌。
0
慕容狗蛋
慕容狗蛋

UTF-8 启动 Tomcat

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"
0
奔跑的水瓜
奔跑的水瓜
var div =document.createElement('div');
div.innerHTML = '<form style="display: none" accept-charset="UTF-8" ></form>';
document.body.appendChild(div);

 

0
-SORA-
-SORA-

用base64再包裹一层。

返回顶部
顶部