2013-01-13 120 views
0

我有一個restful類發送JSON字符串POST請求。數據以UTF-8格式存儲在數據庫中。但是非英文字符總是顯示爲'??????',如果我從@Model獲得記錄,它就可以正常工作。 這裏是休息的代碼卡(使用簡單的JSON編碼JSON字符串):JSF寧靜輸出非英文字符

@POST 
@Path("/holidaylist") 
@Produces(MediaType.APPLICATION_JSON) 
public String getHoliday(){ 

    List list = new LinkedList(); 
    // Get list of holidays 
    List<Holiday> holidays = em.createQuery("SELECT holiday FROM Holiday holiday").getResultList(); 

    Map event; 
    for(Holiday holiday : holidays){ 
     System.out.println("======== Holiday name: " + holiday.getHolidayName()); 
     event = new HashMap(); 
     event.put("id", holiday.getHolidayId()); 
     event.put("title", holiday.getHolidayName()); 
     event.put("start", holiday.getStartDate().toString()); 

     list.add(event); 
    } 

    return JSONValue.toJSONString(list); 
} 

在先進的感謝。

+0

這經常發生是因爲POST請求指定了另一個字符集。因此,Java-EE中的基本機制自動將您請求的內容轉換爲POST請求可接受的字符集。如果此請求來自網頁,則可能必須更改網頁以指定utf-8。 – Eelke

+0

它是從網頁的utf-8格式。 – lastcow

回答

1

您需要確保正確處理數據編碼始終從數據庫到前端。我並不完全熟悉SimpleJSON api,但確定toJSONString使用UTF-8編碼嗎?此外,請確保您的頁面在您渲染的位置。

0

通過使用JAXB實現來解決。看起來簡單的JSON編碼問題。

謝謝大家。