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

Reply via email to