我正在开发一个可以在不同语言(德语、西班牙语等)下工作的应用程序。该应用程序使用 Oracle DB。我有 CRUD 业务流程和标准视图(创建、编辑、显示、列表)。创建、显示和列出任何包含特殊字符(如 ä、ö、ü 等)的记录都没有问题。但是当我编辑任何包含这些字符的条目时,我得到的是编码版本。即ä 而不是 ä & ouml; 而不是 ö & uuml; 而不是ü
等等。
任何提示如何解决这个问题?
谢谢!
更新感谢您的帮助。我将描述完整的场景:
我有一个用 grails (groovy on grails) 编写的 Web 应用程序。对于开发,我使用 Jetty 作为服务器和 Oracle 10g。对于测试和生产,我使用的是 Tomcat 6.0.18,Oracle 10g Java 版本是 1.6.0_02
我有许多 CRUD 进程(创建、检索、更新、删除)。该应用程序是多语言的。即必须允许ä、ö、ü、ß、á、é、í、ó、ú 字母(字符)作为内容。
视图是用 gsp 编写的。我正在使用标准的 .gsp 视图(创建、编辑、显示、列表)。创建,显示,列表没有问题。也就是说,如果在创建视图下我使用此特殊字符键入任何单词,那么这将在 show.gsp 或 list.gsp 下正确显示或列出
编辑包含此类字符的记录时会出现问题。而不是 - 让我们说 - ä出现在字段中一个 & auml; (这是ä的html编码)。
我有以下设置:
在 Config.groovy grails.views.gsp.encoding="UTF-8" grails.converters.encoding="UTF-8" 下
每个 .gsp 页面都有以下元标记:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" pageEncoding="UTF-8"/>
每个表单都有以下属性:
<g:form accept-charset="UTF-8" method="post" >
在Tomcat下我做了以下设置。
tomcat 使用以下选项启动:
CATALINA_OPTS=-Dfile.encoding=UTF-8
JAVA_OPTS="-Duser.language=de -Duser.country=DE"
在 web.xml 下我设置了以下过滤器
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
在 myApplication/WEB-INF/classes/filters 下,我从 examples/WEB-INF/classes/filters 复制了 SetCharacterEncodingFilter.class
在 server.xml 下,我设置了以下连接器:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="UTF-8" />
场景如下: 服务器接收到编辑表单的请求。服务器正在从数据库中检索信息,然后数据库正在发送已经 html 编码的信息(我不这么认为),或者服务器正在对其进行编码并将其编码发送给客户端。
此外,在我的控制器上,我可以看到从服务器检索到的信息不是 html 编码的。
我不知道必须进行哪个设置才能解决这个编码问题(这花了我很多时间和精力)。
提前非常感谢。
路易斯