2014-02-12 65 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