2013-01-13 90 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编码问题。

谢谢大家。