James R Doyle created VELOCITY-880: -------------------------------------- Summary: DataSourceResourceLoader corrupts UTF-8 characters in template Key: VELOCITY-880 URL: https://issues.apache.org/jira/browse/VELOCITY-880 Project: Velocity Issue Type: Bug Affects Versions: 2.1.x Environment: Oracle12c and HSQLDB 2.3.4, JDK 1.8 Reporter: James R Doyle
A long-withstanding bug in the DataSourceResourceLoader corrupts UTF-8 templates retrieved from the database. The Unit Test suite for this resource loader has deficiencies that hide the bug. The cause of the problem is this: InputStream rawStream = rs.getAsciiStream(templateColumn); The resolution of the problem is simply: Reader r = rs.getCharacterStream(templateColumn); InputStream rawStream = null; try { rawStream = IOUtils.toInputStream(IOUtils.toString(r), encoding); } catch (IOException ioe) {} Once done, the test failure vanishes: org.junit.ComparisonFailure: Unicode test failed. Expected :The Euro Currency Symbol € is a two-byte UTF-8 character. Actual :The Euro Currency Symbol ? is a two-byte UTF-8 character. The bug was verified and the fix was tested against Oracle12c and HSQLDB 2.3.4 using a CLOB column to store the template data. The Unit Tests for this resource loader need attention. Please see VELOCITY-599 ; long standing problem, which has been erroneously marked as resolved but has been in the codebase for a long time. -- This message was sent by Atlassian JIRA (v6.3.15#6346) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org For additional commands, e-mail: dev-h...@velocity.apache.org