Here is an old v1.6 example but principal applies to a current release. http://koti.mbnet.fi/akini/java/unicodereader/ http://koti.mbnet.fi/akini/java/unicodereader/UnicodeLoaderForVelocity.zip
resource.loader = file file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader file.resource.loader.unicode = true Yes, FileResourceloader with "unicode=true" attribute can handle all utf* and ansi encoding transparently. Encoding is autorecognized by BOM marker or fallback to a legacy ansi. We don't need or should tell a read encoding, its an internal bytesToChars issue handled by unicodeinputstream. ... Template template = Velocity.getTemplate(srcFile); template.merge(context, out); ... You should not use Velocity.getTemplate(name, encoding) method if used FileResourceLoader with unicode=true attribute. It voids all the wise purpose of FileResourceLoader unicode. --- On Tue, 7/21/09, johann.we...@eventim.de <johann.we...@eventim.de> wrote: > From: johann.we...@eventim.de <johann.we...@eventim.de> > Subject: AW: AW: getEncodingFromStream from UnicodeInputStream > To: user@velocity.apache.org > Date: Tuesday, July 21, 2009, 10:14 AM > The UnicodeInputStream class is used > to load files with a BOM correctly. It knows the file > encoding but I can't use it. > If it is the case that I have to load files with a > different encoding (e.g. UTF-8 and UTF-16), I won't be able > to handle such a situation, because I must set the > input.encoding property or pass it to the getTemplate > method. Otherwise, the default encoding will be taken for > all files. > > > -----Ursprüngliche Nachricht----- > Von: mailmur [mailto:mail...@yahoo.com] > > Gesendet: Dienstag, 21. Juli 2009 08:22 > An: Velocity Users List > Betreff: Re: AW: getEncodingFromStream from > UnicodeInputStream > > > I think you misunderstood a fundametal reason of the > UnicodeInputStream class. It is to use so that template > loaders don't need to tell an encoding so all is fully > transparent. > > getTemplate(name, encoding) method is an old legacy method > where we as a user must know the encoding beforehand. This > is very very unfortunate issue, something we should not > worry about in the first place. > > Its only FileResourceLoader class using the > UnicodeInputStream class. All other loaders don't use it, > this is a lack of Velocity loader implementation. If all > loaders was to use it then we just would use > getTemplate(name) and all is fine. > > FileResourceLoader does not use it as a default use, you > must tell "unicode=true" in a velocity.properties > configuration. Then you can forget the file encoding, ansi > and utf* templates are loaded properly. > > http://svn.apache.org/repos/asf/velocity/engine/trunk/src/java/org/apache/velocity/runtime/resource/loader/FileResourceLoader.java > > > --- On Tue, 7/14/09, johann.we...@eventim.de > <johann.we...@eventim.de> > wrote: > > > From: johann.we...@eventim.de > <johann.we...@eventim.de> > > Subject: AW: getEncodingFromStream from > UnicodeInputStream > > To: user@velocity.apache.org > > Date: Tuesday, July 14, 2009, 9:36 AM > > It is in > > > org.apache.velocity.app.VelocityEngine.getTemplate(String > > name, String encoding) > > They sure do when you're using BOM in your templates. > I > > though it would be nice to use the encoding which was > > determined by UnicodeInputStream. > > > > -----Ursprüngliche Nachricht----- > > Von: mailmur [mailto:mail...@yahoo.com] > > > > Gesendet: Montag, 13. Juli 2009 21:16 > > An: Velocity Users List > > Betreff: Re: getEncodingFromStream from > UnicodeInputStream > > > > > > I think its not possible, its basicly an internal > > bytesToChars issue to know about encoding. Textual > templates > > know nothing about byte storage they run at character > level > > nor know nothing about template loader instance was > used. > > > > What is it getTemplate() method you mean, can you > point me > > to the class? > > http://svn.apache.org/repos/asf/velocity/engine/trunk/src/java/org/apache/velocity/ > > > > > > > > --- On Wed, 7/8/09, johann.we...@eventim.de > > <johann.we...@eventim.de> > > wrote: > > > From: johann.we...@eventim.de > > <johann.we...@eventim.de> > > > Subject: getEncodingFromStream from > > UnicodeInputStream > > > To: user@velocity.apache.org > > > Date: Wednesday, July 8, 2009, 2:48 PM > > > Hi all, > > > > > > Is there a way to get the encoding information > from > > > UnicodeInputStream to use it in the > getTemplate() > > method? > > > How do I can use the encoding which was auto > detected > > in case of unicode file recognition? > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org > For additional commands, e-mail: user-h...@velocity.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org > For additional commands, e-mail: user-h...@velocity.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org For additional commands, e-mail: user-h...@velocity.apache.org