Re: UTF encoding error

Поиск
Список
Период
Сортировка
От Fernando Nasser
Тема Re: UTF encoding error
Дата
Msg-id 3DEE411C.6030309@redhat.com
обсуждение исходный текст
Ответ на UTF encoding error  (Felipe Schnack <felipes@ritterdosreis.br>)
Ответы Re: UTF encoding error
JDBC driver - first impressions and comments
Список pgsql-jdbc
Oi Felipe,

The code in the driver is straight forward so the only way you can get one of
those is that the string sent by the backend is encoded wrong.  (I guess we will
have to catch this error and give a better message anyway).

As of 7.3, the backend does the conversion between your encoding (databse
encoding) and UNICODE (client encoding set with "set client_encoding =
'UNICODE';") and sends everything as UTF8 to the driver.  If the stream of bytes
send has something wrong and says that there is a 3 byte sequence and only two
are there we could get this exception.  But this means that the conversion was
made wrong in the backend.

Have you initialized your cluster with -E  ?  Isn't it possible that you did not
tell the backend that it is supposed to work with Brazilian Portuguese and
loaded some encoded data there using some binary form?

Cheers,
Fernando



Felipe Schnack wrote:>   I'm getting this error, I'm pretty sure it's a driver
error, but can't
> imagine why... I'm just fetching string (in br-pt language)
>
> java.lang.ArrayIndexOutOfBoundsException: 15
>     at org.postgresql.core.Encoding.decodeUTF8(Encoding.java:254)
>     at org.postgresql.core.Encoding.decode(Encoding.java:165)
>     at org.postgresql.core.Encoding.decode(Encoding.java:181)
>     at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.getString(AbstractJdbc1ResultSet.java:97)
>     at
> org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java)
>     at com.w2.infra.db.CtlDatabase.getField(CtlDatabase.java:60)
>     at com.w2.infra.mvc.CtlModel.importResultRow(CtlModel.java:48)
>     at com.w2.infra.db.DbVector.getLinkedList(DbVector.java:310)
>     at com.w2.infra.db.CachedVector.<init>(CachedVector.java:48)
>     at com.w2.infra.tags.CtlInvokerTag.doEnd(CtlInvokerTag.java:87)
>     at com.w2.infra.tags.BodyTagLib.doEndTag(BodyTagLib.java:86)
>     at
> org.apache.jsp.questionariocopia_jsp._jspx_meth_w2_invoker_0(questionariocopia_jsp.java:158)
>     at
> org.apache.jsp.questionariocopia_jsp._jspService(questionariocopia_jsp.java:64)
>     at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java)
>     at org.apache.jasper.servlet.JspServletWrapper.service(Unknown Source)
>     at org.apache.jasper.servlet.JspServlet.serviceJspFile(Unknown Source)
>     at org.apache.jasper.servlet.JspServlet.service(Unknown Source)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
> Source)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown
> Source)
>     at
> com.w2.infra.servlets.ErrorPageFilter.doFilter(ErrorPageFilter.java:25)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
> Source)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown
> Source)
>     at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown Source)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
>     at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>     at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>     at org.apache.catalina.core.StandardContextValve.invoke(Unknown Source)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
>     at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>     at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>     at org.apache.catalina.core.StandardContext.invoke(Unknown Source)
>     at org.apache.catalina.core.StandardHostValve.invoke(Unknown Source)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
>     at org.apache.catalina.valves.ErrorDispatcherValve.invoke(Unknown
> Source)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
>     at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown Source)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
>     at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>     at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>     at org.apache.catalina.core.StandardEngineValve.invoke(Unknown Source)
>     at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
>     at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
>     at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
>     at
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
>     at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
>     at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
>     at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
>     at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
>     at java.lang.Thread.run(Thread.java:536)
>
>



--
Fernando Nasser
Red Hat - Toronto                       E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9


В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Felipe Schnack
Дата:
Сообщение: UTF encoding error
Следующее
От: Felipe Schnack
Дата:
Сообщение: Re: UTF encoding error