2013-05-09 60 views
0

我的web应用程序有一些问题,如下所示:阿拉伯字符显示像?????虽然通过jQuery Ajax调用

1)我通过Jquery ajax调用控制器并获取JSON格式的响应数据。

2)该控制器触击数据库并从数据库中检索数据,检索到的数据是阿拉伯文格式。

3)然后我填充这是在jsp页面构建在jQuery的对话框中的数据,但这些数据是格式不正确

================= =====阿贾克斯呼叫======================

$.ajax({ 

     url: "Login/getUserData.html", 
     type: "GET", 
     cache: false, 
     async: false, 
    dataType:"json", 
contentType: "application/json; charset=utf-8", 
    success : function(data) { 
    jQuery.parseJSON(data); 
    if(data!=null) 
     { 
          //*****************Start***************  
          $("#post").dialog({ 
           height : 500, 
           width : 550, 
           resizable: false, 
           modal : true, 
           open: function(){ 
            $('#cName').val(data.fname+" "+data.lname);  $('#cEmail').val(data.email);  
            $('#cNo').val(data.contact);  
            $('#dateL').val(data.currentDate); 
            } 
          }); 
          //*****************End***************  
         } 
         else 
         { 
          $("#notLoggedInMessageDialog").dialog('open'); 
         } 
        }, 
        error:function(){ 
         alert("Error occured"); 
        }}); 

     =====================LoginController.java ================= 
@Controller 
@RequestMapping("/Login/") 
@Scope("request") 
public class LoginController { 

/* 
* method to get log-id user's data 
*/ 
@RequestMapping(value = "/getUserData", method = RequestMethod.GET, produces = {"application/json; charset=UTF-8"}) 
@ResponseBody 
public String getUserData(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { 
    System.out.println("================inside LoginController.getUserData()============="); 
    UserModel uModel = (UserModel) request.getSession().getAttribute("user"); 
    request.setCharacterEncoding("UTF-8"); 
    response.setContentType("text/html;charaset=UTF-8"); 
    String user = null; 
    if (uModel != null) { 
     UserModel newUserModel = new UserModel(); 
     newUserModel.setuId(uModel.getuId()); 
     newUserModel.setContact(uModel.getContact()); 
     String email = new String(uModel.getEmail().getBytes("UTF-8")); 
     System.out.println(uModel.getEmail() + " encoded email = " + email); 
     newUserModel.setEmail(uModel.getEmail()); 
     newUserModel.setFname(uModel.getFname()); 
     newUserModel.setLname(uModel.getLname()); 
     newUserModel.setEmailTemplate(uModel.getEmailTemplate()); 
     String current_Date = new SimpleDateFormat("MM/dd/yyyy").format(new Date()); 
     newUserModel.setCurrentDate(current_Date); 
     Gson gson = new GsonBuilder().setDateFormat("MM/dd/yyyy").create(); 
     user = gson.toJson(newUserModel); 
     System.out.println("user = " + user); 
    } 
    return user; 
} 
} 

====================postlisting.jsp==================== 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%> 
<!DOCTYPE html> 
<% 
String direction = (String) request.getAttribute("data"); 
request.setCharacterEncoding("UTF-8"); 
response.setContentType("text/html;charaset=UTF-8"); 
%> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
    <div> 
     <fieldset style="border: none;"> 
      <center> 
       <legend> 
        <b><"label.extruder.myProfile.newListing.basicinfo"/></b> 
       </legend> 
       <table id="f1" style="text-align: justify;"> 
        <tr> 
         <td ><"label.extruder.myProfile.newListing.cntName"/>:*</td> 
         <td ><input type="text" style="width: 100px;" id="cName"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.cntEmail"/>:*</td> 
         <td><input type="text" id="cEmail" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.cntNo"/>:*</td> 
         <td><input type="text" id="cNo" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.dateL"/>:*</td> 
         <td><input type="text" id="dateL" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.dateA"/>:*</td> 
         <td><input type="text" id="dateA" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.rent"/>:*</td> 
         <td><input type="text" id="rent" style="width: 100px;" /></td> 
        </tr> 
         </tr> 
       </table> 
       </center> 
     </fieldset> 
      </div> 
    </body> 
</html> 

可以任何机构解决这个问题??在头块

+1

您预计将与代码(而非图片)在这里发表完整和独立的问题,有可能。你不应该强迫人们点击外部链接来获取基本信息。 – 2013-05-09 07:46:21

回答

1

使用元标签

<meta http-equiv="content-type" content="text/html";charset="utf-8" /> 

希望它可以帮助你

+0

谢谢,但它不起作用 – user1348237 2013-05-09 12:09:11

0

我已经改变返回类型为void解决了这个问题,并 通过在控制器中添加一些代码如下:

@Controller 
@RequestMapping("/Login/") 
@Scope("request") 
public class LoginController { 

/* 
* method to get log-id user's data 
*/ 
@RequestMapping(value = "/getUserData", method = RequestMethod.GET, produces =   {"application/json; charset=UTF-8"}) 
@ResponseBody 
public void getUserData(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { 
System.out.println("================inside LoginController.getUserData()============="); 
UserModel uModel = (UserModel) request.getSession().getAttribute("user"); 
String user = null; 
if (uModel != null) { 
    UserModel newUserModel = new UserModel(); 
    newUserModel.setuId(uModel.getuId()); 
    newUserModel.setContact(uModel.getContact()); 
    String email = new String(uModel.getEmail().getBytes("UTF-8")); 
    System.out.println(uModel.getEmail() + " encoded email = " + email); 
    newUserModel.setEmail(uModel.getEmail()); 
    newUserModel.setFname(uModel.getFname()); 
    newUserModel.setLname(uModel.getLname()); 
    newUserModel.setEmailTemplate(uModel.getEmailTemplate()); 
    String current_Date = new SimpleDateFormat("MM/dd/yyyy").format(new Date()); 
    newUserModel.setCurrentDate(current_Date); 
    Gson gson = new GsonBuilder().setDateFormat("MM/dd/yyyy").create(); 
    user = gson.toJson(newUserModel); 

    //new code added 
response.setCharacterEncoding("utf-8"); 
    response.getWriter().write(user); 
} 
return user; 
} 
} 
0

请使用过滤器进行编码web.xml文件

<filter> 
<filter-name>encodingFilter</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-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>