JS编码转换(SringMVC框架下的KindEditor文本框数据丢失)(包括中文和特殊字符)

来源:互联网 发布:股票网上开户软件 编辑:程序博客网 时间:2024/06/07 15:33

      很久没有写博客了,也很久没有写代码,重写Blog之前,聊发几句,以此慰藉时间的飞逝。

      现在接到几份Offer,比较好的有3家,但是南京就这么大,好公司就那点儿,真的让我很烦恼,有时候过多的选择也是一种负担。今后在好好写2年代码,提升一下自己。记

录下自己的心得,也分享于给位同仁。

      前言完。

      最近公司项目的任务很少,和朋友接了个APP的私活,其中发布新闻时需要用到富文本,参考了很久选择了KindEditor这个插件。

      这次Blog只讲一下其中遇到的JS编码转换的问题。

      ------------------------

      新闻发布功能,肯定要有很多文本功能,因为页面功能繁多,又需要用到【图片/文件异步加载】功能,所以,一个JSP页面分了几个FORM表单,分别操作自己的FORM表

单,互不干扰。

      因为只要局部提交数据,并且返回列表页面,所以只用了【ajax】提交数据,没有用【submit】,那么所有的参数都是取值后手动拼写而成。

      那么,问题来了!!!

      代码如下:

      下面部分都是页面参数的值,当然了,最主要的问题就是artContent这里,大家请留意。
        var artNum = $("#artNumId").val();var artType = $("#artTypeSelectId").val();var artTitle = $("#artTitleId").val();var artBigImg = $("#artBigImgId").val();var artPerson = $("#artPersonId").val();var artContent = $("#content_1").val();var artMinImg = $("#artMinImgId").val();var isSendObj = $("#isSendId");var artOperator = $("#artOperatorId").val();var artLabel = $("#contentLabelSelId").val();var artTime = $("#timeLabelSelId").val();
//开始没有这句话
artContent = escape(encodeURIComponent(artContent));
$.ajax({type:"post",url:"Pc200103",dataType:"text",data:"artNum="+artNum+"&artType="+artType+"&artTitle="+artTitle+"&artBigImg="+artBigImg+"&artPerson="+artPerson"+"&artContent="+artContent+"&artMinImg="+artMinImg+"&isSend="+isSend+"&artCheck="+artCheck+"&artOperator="+artOperator+"&artLabel="+artLabel+"&artTime="+artTime,success:function(responseText){p_articleManage(1);},error:function(XMLHttpRequest, textStatus, errorThrown){alert(XMLHttpRequest.status);}});
</pre><p>          因为富文本编辑,会存在很多空格,回车,换行,tab等特殊字符,在这次项目中,编辑富文本时候,如果敲一下空格,那么是占了半个字节,所以只是【半个空格①】,如果敲两下空格,那么就是一整个字节了,KindEditor会自动转换为【&nbsp;】  ,那么问题来了!</p><p>          因为ajax传输时候字符串就是用&拼接而成,那么现在富文本中又存在这样的&nbsp;就会发生识别错误的问题,大家应该能理解这个地方的问题所在吧。</p><p>          下面就是我要说的如何去转换字符了。JS自带的转换编码有3中,分别如下:</p><p>          </p><pre class="html" name="code">     escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z      encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z      encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z


           artContent = escape(encodeURIComponent(artContent));

           我项目中所遇到的就是&字符导致数据丢失,所以需要选择最后一种编码方式,而普通的中文编码,只需要用第二种格式即可。后台取值时候用如下代码即可:

           

     String artContent = req.getParameter("artContent");     artContent=java.net.URLDecoder.decode(artContent,"UTF-8");


           如此,就能解决了该问题,当然每个人遇到的情况不一样,所需要的东西也不同。我之前就是纯粹的中文乱码问题了。

           不想写了,总觉得没那么有耐心了,慢慢来吧。

           如果有什么问题,希望各位指正,如果有需要讨论的,也可以加我的QQ:3674585

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

0 0
原创粉丝点击