您的位置:首页 > 其它

ZK提交textbox内奇数个中文汉字乱码问题

2009-04-08 15:48 363 查看
小弟最近在学习使用ZK技术,发现textbox里填写的中文产生奇数汉字乱码问题,不得正解,终日郁郁寡欢....

 

奇数汉字乱码问题产生原由:ZK ajax提交textbox里的中文采用UTF-8  URLEncode编码,传递到服务器端以后又采用GBK URLDecode,就会产生该问题。

 

网上说的补一个全角空格,发现如果混杂了汉字英文也不行,所以我采用了一种比较别扭的办法:

 

<textbox visible="false" id="nickname2"  width="150px" />
<textbox action="onBlur:#{nickname2}.value=#{nickname}.value;#{nickname}.value=encodeURI(#{nickname}.value);action.show(#{nickname2});action.hide(#{nickname});" id="nickname" value="" width="150px" />
 

定义2个textbox,一个隐藏,一个显示,一开始把要输入汉字的textbox显示出来nickname,把另外一个隐藏nickname2,但输入汉字完毕,焦点移走的时候,触发onblur的js事件,把nickname里的内容拷贝到nickname2当中,并把nickname里的内容用js进行url编码,然后把nickname隐藏起来

 

当提交以后,则把nickname里的内容提交到服务器,服务器对该内容进行解码即可!

 

虽然按这种方法解决了乱码问题,但的确非常别扭,希望得到正解的朋友能告之...Thanks a lot!

 



 

贴个用zk做的系统截图::

 



      

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

补充,经过一段时间的使用,发现如果回到nickname去编辑,会导致编辑无效,因此,补充办法为:

 

<textbox rows="5" cols="50" action="onFocus:#{content2}.value='';#{content}.value=decodeURI(#{content}.value);action.show(#{content});action.hide(#{content2});" visible="false" id="content2"  width="150px" />
      <textbox rows="5" cols="50" action="onBlur:#{content2}.value=#{content}.value;#{content}.value=encodeURI(#{content}.value);action.show(#{content2});action.hide(#{content});" id="content" value="" width="150px" />
      

 

获得焦点以后重新解码回去即可

 

 

 

另外补充一点是: 如果把textbox放在form当中使用,会导致action.show action.hide不起作用,不知道是为什么,要避免之!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息