velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mailmur <mail...@yahoo.com>
Subject Re: AW: AW: getEncodingFromStream from UnicodeInputStream
Date Tue, 21 Jul 2009 21:44:49 GMT

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.Weber@eventim.de <Johann.Weber@eventim.de> wrote:

> From: Johann.Weber@eventim.de <Johann.Weber@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:mailmur@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.Weber@eventim.de
> <Johann.Weber@eventim.de>
> wrote:
> 
> > From: Johann.Weber@eventim.de
> <Johann.Weber@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:mailmur@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.Weber@eventim.de
> > <Johann.Weber@eventim.de>
> > wrote:
> > > From: Johann.Weber@eventim.de
> > <Johann.Weber@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-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
> 
> 


      

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
For additional commands, e-mail: user-help@velocity.apache.org


Mime
View raw message