سؤال

لقد واجهت مشكلة غريبة في WebApp Grails التي تعمل تحت Grails:

java.io.UnsupportedEncodingException يتم إلقاؤه بشكل متكرر بسبب سلاسل تشفير مختلفة غير معروفة (مثل "ISO8859_10", "ISO-8859-10") ، والشيء الغريب هو أن هذا يتم بالكامل داخل رمز الراتنج والكأس. هذا - لا يوجد رمز مخصص عند إلقاء الاستثناء.

لست متأكدًا مما إذا كانت الكأس أو رمز حاوية Servlet التي يجب أن تتعامل مع الاستثناء. لكنني أفترض أنه يجب التعامل مع الاستثناء في مكان ما وليس قاطعًا على طول الطريق إلى Stderr.

هذا هو الاستثناء بالكامل:

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 (راتنج) أو إطار الويب (Grails)؟
  • كيف يمكنك حل هذا؟ (أفضل عدم الحصول على سجل الاستثناء مع استثناءات لا يمكنني فعل أي شيء عنها.)
هل كانت مفيدة؟

المحلول

لا أعرف الكثير عن الكأس ، ولكن ربما يمكنك محاولة معرفة من أين يأتي هذا الترميز الغريب.

هل ترسل طلباتك رؤوس القبول؟ هل تعمل الأشياء بشكل أفضل إذا قمت بتعيين خاصية نظام "file.encoding" على شيء ذي معنى مثل UTF-8 في Resin.conf؟

نصائح أخرى

يمكنك أيضًا إعداد ملف localeResolver الفول في سياق التطبيق الخاص بك. ال DispatcherServlet سوف تستخدم ذلك لحل اللغة. لم أجربها بنفسي ، لكن اقتراحي هو استخدام org.springframework.web.servlet.i18n.FixedLocaleResolver. سوف تفوض Locale.getDefault() إذا لم يكن لديك أي إعداد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top