Java RESTlet POST主体中的Unicode

时间:2015-04-21 18:10:18

标签: java rest restlet

我有一个像这样的Java RESTlet v2.1.2方法:

@Post("json") 
public Representation doPost(Representation entity) throws UnsupportedEncodingException { 
  Request request = getRequest(); 
  String entityAsText = request.getEntityAsText(); 
  logger.info("entityAsText = " + entityAsText + " Üüÿê");

在Cygwin控制台中打印:

2015-04-19 22:07:27 INFO  BaseResource:46 - entityAsText = { 
"Id":"xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx", 
"Field1":"John?????????", 
"Field2":"Johnson??????????"
} ▄³ Û

正如您所见,Üüÿê打印为▄³Û。角色Üüÿê也在SOAP UI的POST主体中。但它们被打印成???。我有一个实现,它不使用RESTlet,这是有效的。因此SOAP UI中的设置不是问题。 (POST正文在Application / JSON顺便说一句。)

如何从POST主体中提取unicodecharsÜüÿê而不将它们作为??? ?

1 个答案:

答案 0 :(得分:0)

我做了一个测试,它对我有用,但也许我没有关于字符集/编码的相同配置。我使用了Postman的独立Restlet应用程序(没有servlet)。您能否向我们提供有关Restlet版本以及您使用的不同版本/扩展的更多详细信息(例如,Jackson,Servlet,...)?

以下是我对Java的看法(您可以查看此链接:How to Find the Default Charset/Encoding in Java?):

Default Charset=UTF-8
file.encoding=Latin-1
Default Charset=UTF-8
Default Charset in Use=UTF8

您还可以在标题Content-Type的级别指定您为内容发送的字符集:application/json;charset=utf-8

几年前我写了一篇关于使用servlet容器时这类问题的帖子。也许您还可以找到一些帮助您的提示:https://templth.wordpress.com/2011/06/05/does-your-java-based-web-applications-really-support-utf8/

希望它可以帮到你, 亨利