java - 使用 Resin 和 Grails 时抛出 UnsupportedEncodingException

标签 java grails servlets spring-mvc resin

我在 Grails 下运行的 Grails Web 应用程序中遇到了一个奇怪的问题:

java.io.UnsupportedEncodingException 由于各种未知的编码字符串(例如 "ISO8859_10""ISO-8859-10"),奇怪的是这完全是在 Resin 和 Grails 代码中完成的。也就是说,抛出异常时不涉及任何自定义代码。

我不确定是 Grails 还是 servlet 容器的代码应该处理异常。但我认为应该在某个地方处理异常,而不是一直冒泡到 stderr。

这是完整的异常(exception):

java.io.UnsupportedEncodingException: ISO-8859-10
  at com.caucho.vfs.i18n.JDKWriter$OutputStreamEncodingWriter.<init>(JDKWriter.java:112)
  at com.caucho.vfs.i18n.JDKWriter.create(JDKWriter.java:79)
  at com.caucho.vfs.Encoding.getWriteEncoding(Encoding.java:231)
  at com.caucho.server.connection.ToByteResponseStream.setEncoding(ToByteResponseStream.java:137)
  at com.caucho.server.connection.AbstractHttpResponse.setLocale(AbstractHttpResponse.java:1683)
  at com.caucho.server.connection.HttpServletResponseImpl.setLocale(HttpServletResponseImpl.java: 115)
  at javax.servlet.ServletResponseWrapper.setLocale(ServletResponseWrapper.java:139)
  at javax.servlet.ServletResponseWrapper.setLocale(ServletResponseWrapper.java:139)
  at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1035)
  at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:290)
  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)

我的问题:

  • 是否应该处理异常?如果是这样,这是 servlet 容器(Resin)还是 Web 框架(Grails)的责任?
  • 您将如何解决这个问题? (我不想让异常日志中充满我无能为力的异常。)

最佳答案

我对 Grails 不太了解,但也许你可以尝试找出这种奇怪的编码从何而来。

您的请求是否发送 Accept-Charset header ? 如果您在resin.conf 中将“file.encoding”系统属性设置为有意义的值(例如UTF-8),效果是否会更好?

关于java - 使用 Resin 和 Grails 时抛出 UnsupportedEncodingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2749528/

相关文章:

JAVA:JProgressbar & Files.copy 与 Observer 和 Swingworker 在 1 类中

java - 如何在intellij idea IDE中运行javafx应用

hibernate - grails 中的 "detached"实例是什么?

grails - 名称为 “${appname}.log”的外部log4j的Grails无效

java - JSP 返回 HTTP 状态 404 - 未找到 glassfish

JAVA: SparkConf 无法转换为 SparkContext

java - 这些方法是线程安全的吗?

grails - 多个联接的排序问题

java - 已部署的 Web 应用程序中的动态 URL 更新

java - 如果我刷新,请求调度程序转发会再次添加