Ilkka Priha wrote:
> 
> Now that Velocity has nice encoding support for templates, I have a new wish
> on my list. Please, be patient :). In addition to templates, property files
> are frequently used for defining certain standard string literals in user
> interface screens, like UI Manager skins in Turbine. Unfortunately, the
> java.util.Properties class has a hardcoded "8859_1" encoding in its load()
> method, which makes it difficult to use property files for user interfaces
> of non-latin languages.

Not a bad idea :)

> 
> As Configuration is already an improvement to Properties, it's a perfect
> candidate to be even better and implement a load method that supports
> different character encodings. Below is my proposal for the job.

The Configuration class is going over to Commons-collections.

As I am trying to get a 0.x release out so we can share a stable jar in
Velocity and Turbine. I would be happy to punch this in for you if you
want...

geir

> 
> -- Ilkka
> 
> --- Configuration.old   Wed May  2 20:06:04 2001
> +++ Configuration.new   Wed May  2 20:05:15 2001
> @@ -65,6 +65,7 @@
>  import java.io.OutputStream;
>  import java.io.PrintWriter;
>  import java.io.Reader;
> +import java.io.UnsupportedEncodingException;
> 
>  import java.util.ArrayList;
>  import java.util.Enumeration;
> @@ -419,11 +420,42 @@
>       * @param input An InputStream.
>       * @exception IOException.
>       */
> -    public synchronized void load(InputStream input)
> +    public void load(InputStream input)
>          throws IOException
>      {
> -        PropertiesReader reader =
> -            new PropertiesReader(new InputStreamReader(input));
> +      load(input,null);
> +    }
> +
> +    /**
> +     * Load the properties from the given input stream
> +     * and using the specified encoding.
> +     *
> +     * @param input An InputStream.
> +     * @param enc An encoding.
> +     * @exception IOException.
> +     */
> +    public synchronized void load(InputStream input,
> +                                  String enc)
> +        throws IOException
> +    {
> +        PropertiesReader reader = null;
> +        if (enc != null)
> +        {
> +            try
> +            {
> +                reader =
> +                    new PropertiesReader(new InputStreamReader(input,enc));
> +            }
> +            catch (UnsupportedEncodingException e)
> +            {
> +                // Get one with the default encoding...
> +            }
> +        }
> +        if (reader == null)
> +        {
> +            reader =
> +                new PropertiesReader(new InputStreamReader(input));
> +        }

-- 
Geir Magnusson Jr.                           [EMAIL PROTECTED]
System and Software Consulting

Developing for the web?  See http://jakarta.apache.org/velocity/

Reply via email to