2014-02-12 62 views
0

我正在为我的项目使用java。由ajax发送阿拉伯字符 - java

我有一个页面包含很多文本框。

当用户类型阿拉伯串并按下保存按钮的字符串被破坏

例如:

  • 输入:السلام
  • 按钮后:%645D5 $ 64%64F &%DF

我用这个代码使用UTF-8对JSP页面的顶部:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> 

但它不工作。

这是我的Ajax代码:

var name = document.getElementById('LineTitle').value ; 
var category = document.getElementById("LineCategory").value; 
var lineDirection = document.getElementById("LineDir").value; 
markerLayer.clearMarkers(); 
$.ajax({ 
    data: '{"feature": ' + str + ', "name": "' + name + '", "category": "' + category + '", "LineDirection": "' + lineDirection + '"}', 
    type: "POST", 
    url: "../SaveLine", 


    beforeSend: function(x) { 
        if (x && x.overrideMimeType) { 
         x.overrideMimeType("application/json;charset=UTF-8"); 
        } 
       }, 
+0

是'%645D5 $ 64%64f&%DF'您发送السلام时实际得到的是什么? – Joni

+0

如果您在客户端调试JavaScript,那么在服务器端收到它时,该字符串看起来像什么? – Simon

回答

0

如果您在使用Spring MVC添加到您的web.xml

<filter> 
    <filter-name>charsetFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>charsetFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

如果没有,实现自己的过滤器的字符编码,并把它添加到你的web.xml。看看代码CharacterEncodingFilter

0

我遇到类似的问题与其他一些数据。我使用encodeURI()封装了我从javascript发送的数据。 你可以使用encodeURI()或encodeURIComponent(),它可以为你工作。 请确定是否有效!

+0

我使用encodeURI和encodeURIComponent代码,但它不工作 – user1023268

+0

如果使用encodeURI数据我怎么能解码数据? – user1023268

+0

例如:你可以。 Name = encodeURI(name);或encodeURIComponent(name); 然后在ajax中传递这个修改后的名字! – AngularHarsh