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

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

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

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

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

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

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

ZK提交textbox内奇数个中文汉字乱码问题_第1张图片

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

ZK提交textbox内奇数个中文汉字乱码问题_第2张图片


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

补充,经过一段时间的使用,发现如果回到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不起作用,不知道是为什么,要避免之!

你可能感兴趣的:(Ajax,zk)