2013-04-10 29 views
4

我想交下列字符串“`.4.13 - 30613£₤©™”的UTF-8编码一个Grails服务器一旦部署为WAR,我没有Tomcat7Grails的,Tomcat的7,REST客户端和人物

我们的服务器可以作为一个API的两个实例,和网络层之间的通信完全seperately时运气。通过对Web App的POST请求将数据保存到数据库,然后Web App向服务器发送POST(或PUT for updates)请求以保存数据。

本地当我启动Web应用程序和服务器使用“运行应用程序”,而不是当我们移动到非本地enviroments与Tomcat7和部署WAR文件,这工作得很好。

Initally我认为这可能与报告的错误http://jira.grails.org/browse/GRAILS-8873但仔细检查后,似乎UTF-8是默认的,无论如何,和目前正在使用

非本地enviroments用以下结构(在Tomcat7部署WAR)

Entry Point -> Apache 2.2 < - > Web App < - > Server 

本地环境中使用以下结构(运行应用程序)

Entry Point -> Web Abb < - > Server 

我有输出在编组字符串的时间值,以确保在它发送到服务器,这是正确的编码

DEBUG MarshallService - Marshalling Property : name of value [ `.4.13 - 30613 £ ? © ™] 

这是直接从日志从网络发出的请求的应用程序到服务器 忽略内容长度错误的事实,我为了可读性而截断了主体。

DEBUG org.apache.http.headers - >> PUT /baseline-server/baseline/pwqi9tzyTRWX5oZogfKjJw HTTP/1.1 
DEBUG org.apache.http.headers - >> Accept: application/json; charset=utf-8 
DEBUG org.apache.http.headers - >> Content-Length: 349 
DEBUG org.apache.http.headers - >> Content-Type: application/json 
DEBUG org.apache.http.headers - >> Host: localhost:9001 
DEBUG org.apache.http.headers - >> Connection: Keep-Alive 
DEBUG org.apache.http.headers - >> Accept-Encoding: gzip,deflate 
DEBUG org.apache.http.wire - >> "{"name":"`.4.13 - 30613 [0xa3] ? [0xa9] [0x99]"} 

我已经在其他几个地方读了几答案和之前的任何虚拟主机

AddDefaultCharset utf-8 

在两个Tomcat实例(web.xml)中

做了以下

在Apache 2.2的httpd.conf文件

<filter> 
    <filter-name>setCharacterEncodingFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <async-supported>true</async-supported> 
</filter> 

此外,根据其他答案,我ahve确保我们使用webxml 1.4.1

然而,当值达到服务器端,值都???

我发现了什么特别奇怪的是即将离任的JSON不会出现在所有

任何援助将不胜感激

回答

2

我可以推荐一些CONFIGS尽量展示UTF-8字符....让我知道如果任何能够解决您的问题:)

你在Ubuntu或其他Linux呢?尝试设置

LANG="en_US.UTF-8" 
LANGUAGE="en_US:en" 
LC_ALL="en_US.UTF-8" 
在/ etc /默认/区域设置

和运行

sudo locale-gen 

您使用的数据库连接(和重新启动)?检查是否在配置/ dasource.groovy的连接是UTF8

url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8" 

在/etc/Config.groovy

grails.views.gsp.encoding = "UTF-8" 
grails.converters.encoding = "UTF-8" 

检查将这个设置,你的Tomcat连接器配置UTF8

<Connector ... URIEncoding="UTF-8"> 
+0

连接器已经完成,但它现在在lcase,这会有所作为吗?我也将UTF-8编码添加到数据源中无济于事。此外,编码设置也已设置。 – 2013-04-11 02:06:32

+0

尝试执行命令>语言环境。检查所有结果是否都是UTF8并且没有警告报告 – 2013-04-11 07:10:06

+0

所有环境都在运行窗口,您是否有任何equivilent命令? – 2013-04-11 23:58:25