Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle Groovy下的编码问题_Oracle_Encoding_Groovy_Locale - Fatal编程技术网

Oracle Groovy下的编码问题

Oracle Groovy下的编码问题,oracle,encoding,groovy,locale,Oracle,Encoding,Groovy,Locale,我正在开发一个应用程序,应该在不同的语言(德语,西班牙语等)下工作。该应用程序使用Oracle数据库。 我有CRUD业务流程和标准视图(创建、编辑、显示、列表)。 创建、显示和列出任何包含特殊字符的记录都没有问题 像ä、ö、ü等。 但是当我编辑任何包含这些字符的条目时,我得到的是编码的字符 版本即 ä;而不是ä ö;而不是 ü;而不是你 等等 有什么提示可以解决这个问题吗 谢谢 更新 谢谢你的帮助。我将描述完整的场景: 我有一个用grails编写的web应用程序(grai

我正在开发一个应用程序,应该在不同的语言(德语,西班牙语等)下工作。该应用程序使用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页面都有以下元标记:

 <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