Oracle Groovy下的编码问题
我正在开发一个应用程序,应该在不同的语言(德语,西班牙语等)下工作。该应用程序使用Oracle数据库。 我有CRUD业务流程和标准视图(创建、编辑、显示、列表)。 创建、显示和列出任何包含特殊字符的记录都没有问题 像ä、ö、ü等。 但是当我编辑任何包含这些字符的条目时,我得到的是编码的字符 版本即 ä;而不是ä ö;而不是 ü;而不是你 等等 有什么提示可以解决这个问题吗 谢谢 更新 谢谢你的帮助。我将描述完整的场景: 我有一个用grails编写的web应用程序(grails上的groovy)。 对于开发,我使用Jetty作为服务器和Oracle 10g。 对于测试和生产,我使用Tomcat 6.0.18和Oracle 10g Java版本是1.6.0_02 我有许多CRUD过程(创建、检索、更新、删除)。 应用程序是多语言的。也就是说,ä,ö,ü,ß,á,é,í,ó,ú 必须允许字母(字符)作为内容 视图是用gsp编写的。我使用的是标准的.gsp视图(创建、编辑、显示、列表)。 创建、显示和列表都没有问题。也就是说,如果在“创建视图”下键入 任何使用此特殊字符的单词都将显示或列出 在show.gsp或list.gsp下正确显示 编辑包含此类字符的记录时会出现问题。而不是-比方说-ä出现在字段anä;(这是ä的html编码) 我有以下设置: 在Config.groovy下 grails.views.gsp.encoding=“UTF-8” grails.converts.encoding=“UTF-8” 每个.gsp页面都有以下元标记:Oracle Groovy下的编码问题,oracle,encoding,groovy,locale,Oracle,Encoding,Groovy,Locale,我正在开发一个应用程序,应该在不同的语言(德语,西班牙语等)下工作。该应用程序使用Oracle数据库。 我有CRUD业务流程和标准视图(创建、编辑、显示、列表)。 创建、显示和列出任何包含特殊字符的记录都没有问题 像ä、ö、ü等。 但是当我编辑任何包含这些字符的条目时,我得到的是编码的字符 版本即 ä;而不是ä ö;而不是 ü;而不是你 等等 有什么提示可以解决这个问题吗 谢谢 更新 谢谢你的帮助。我将描述完整的场景: 我有一个用grails编写的web应用程序(grai
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" pageEncoding="UTF-8"/>
在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>
SetCharacterEncoding
filters.SetCharacterEncodingFilter
编码
UTF-8
在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编码
我不知道为了解决这个编码问题,必须做哪些设置
(这花费了我很多很多时间和精力)
先谢谢你
路易斯编码是一个棘手的问题,因为你不能总是相信你所看到的。通常使用utf-8就足以解决这个问题。但是,请确保您在任何地方都使用它——oracle服务器、oracle客户端(jdbc)、groovy文件等。请注意java使用utf-16。jdbc驱动程序应该为您执行此转换。最好的建议是java(以及groovy)在字符编码方面完全按照他们说的做,这样就不存在问题了。确保您有工具可以检查系统中每个方面的实际位(十六进制值)。在mysql中-它只是十六进制: .
我想oracle也有类似的功能。再次确保您的客户端配置为使用utf-8。我以前就被这个烫伤了。要检查源文件(或日志文件),请使用类似于xxd或od的内容。如果您正在使用cygwin,请确保启用utf8(在vt字体菜单中)。如果您使用的是windows,而不是cygwin,那么您肯定应该尝试一下(确保您使用的是x版本)。除了已经完成的所有设置之外。我设定了:
grails.views.default.codec="html" // none, html, base64
而不是没有,问题就解决了
我的问题已经暴露在这里:
有关更多信息,请参阅:
http://jira.codehaus.org/browse/GRAILS-1827
Luis我在windows下开发,在ubuntu下测试和集成,生产环境是suse enterprise linux。DB是oracle 10.xx。问题出现在三种环境下。我以为这只是windows的问题,但不是。它无处不在。无论如何,谢谢你的建议。我会考虑的+1如果您对具体问题进行详细阐述,我可能会进一步提供帮助。“当我编辑任何包含这些字符的条目时,我是”你这是什么意思?如何编辑?它是webui吗?如果是这样,请确保您在那里也使用utf-8。也可以在容器中配置这两种设置。
grails.views.default.codec="html" // none, html, base64
http://jira.codehaus.org/browse/GRAILS-1827