diff options
author | Sven de Marothy <sven@physto.se> | 2005-04-08 21:46:05 +0000 |
---|---|---|
committer | Sven de Marothy <sven@physto.se> | 2005-04-08 21:46:05 +0000 |
commit | d619022a1d1b94506f2774b82daea02dde462e44 (patch) | |
tree | 6628305b0ea627dc0a037df9c7e18e91d83ed62f /gnu/java/nio/charset/Provider.java | |
parent | 9d37c49002f196b5aeb3a237903b1f0a23d77d1c (diff) | |
download | classpath-d619022a1d1b94506f2774b82daea02dde462e44.tar.gz |
2005-04-08 Sven de Marothy <sven@physto.se>
* gnu/java/nio/charset/Provider.java: Add new charsets.
* gnu/java/nio/charset/UTF_16.java: Default to using BOM.
* gnu/java/nio/charset/UTF_16Decoder.java: Minor fixes.
* gnu/java/nio/charset/UTF_16Encoder.java,
Use NIO's built-in byte-ordering instead.
* gnu/java/nio/charset/UTF_8.java,
(Decoder): Correct values of maximum chars per byte.
(decodeLoop): Handle 4-byte surrogates.
* gnu/java/nio/charset/ByteCharset.java
* gnu/java/nio/charset/Cp424.java
* gnu/java/nio/charset/Cp437.java
* gnu/java/nio/charset/Cp737.java
* gnu/java/nio/charset/Cp775.java
* gnu/java/nio/charset/Cp850.java
* gnu/java/nio/charset/Cp852.java
* gnu/java/nio/charset/Cp855.java
* gnu/java/nio/charset/Cp857.java
* gnu/java/nio/charset/Cp860.java
* gnu/java/nio/charset/Cp861.java
* gnu/java/nio/charset/Cp862.java
* gnu/java/nio/charset/Cp863.java
* gnu/java/nio/charset/Cp864.java
* gnu/java/nio/charset/Cp865.java
* gnu/java/nio/charset/Cp866.java
* gnu/java/nio/charset/Cp869.java
* gnu/java/nio/charset/Cp874.java
* gnu/java/nio/charset/EncodingHelper.java
* gnu/java/nio/charset/ISO_8859_13.java
* gnu/java/nio/charset/ISO_8859_15.java
* gnu/java/nio/charset/ISO_8859_2.java
* gnu/java/nio/charset/ISO_8859_3.java
* gnu/java/nio/charset/ISO_8859_4.java
* gnu/java/nio/charset/ISO_8859_5.java
* gnu/java/nio/charset/ISO_8859_6.java
* gnu/java/nio/charset/ISO_8859_7.java
* gnu/java/nio/charset/ISO_8859_8.java
* gnu/java/nio/charset/ISO_8859_9.java
* gnu/java/nio/charset/KOI_8.java
* gnu/java/nio/charset/MS874.java
* gnu/java/nio/charset/MacCentralEurope.java
* gnu/java/nio/charset/MacCroatian.java
* gnu/java/nio/charset/MacCyrillic.java
* gnu/java/nio/charset/MacDingbat.java
* gnu/java/nio/charset/MacGreek.java
* gnu/java/nio/charset/MacIceland.java
* gnu/java/nio/charset/MacRoman.java
* gnu/java/nio/charset/MacRomania.java
* gnu/java/nio/charset/MacSymbol.java
* gnu/java/nio/charset/MacThai.java
* gnu/java/nio/charset/MacTurkish.java
* gnu/java/nio/charset/Windows1250.java
* gnu/java/nio/charset/Windows1251.java
* gnu/java/nio/charset/Windows1252.java
* gnu/java/nio/charset/Windows1253.java
* gnu/java/nio/charset/Windows1254.java
* gnu/java/nio/charset/Windows1255.java
* gnu/java/nio/charset/Windows1256.java
* gnu/java/nio/charset/Windows1257.java
* gnu/java/nio/charset/Windows1258.java
New files.
Diffstat (limited to 'gnu/java/nio/charset/Provider.java')
-rw-r--r-- | gnu/java/nio/charset/Provider.java | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/gnu/java/nio/charset/Provider.java b/gnu/java/nio/charset/Provider.java index 1a5606813..781c10ec9 100644 --- a/gnu/java/nio/charset/Provider.java +++ b/gnu/java/nio/charset/Provider.java @@ -77,8 +77,14 @@ public final class Provider extends CharsetProvider */ private final HashMap charsets; + /** + * We don't load all available charsets at the start + */ + private boolean extendedLoaded; + private Provider () { + extendedLoaded = false; canonicalNames = new HashMap (); charsets = new HashMap (); @@ -99,10 +105,80 @@ public final class Provider extends CharsetProvider // UTF-16 addCharset (new UTF_16 ()); + + // Windows-1250 aka cp-1250 (East European) + addCharset (new Windows1250 ()); + + // Windows-1251 (Cyrillic) + addCharset (new Windows1251 ()); + + // Windows-1252 aka cp-1252 (Latin-1) + addCharset (new Windows1252 ()); + + // Windows-1253 (Greek) + addCharset (new Windows1253 ()); + + // Windows-1254 (Turkish) + addCharset (new Windows1254 ()); + + // Windows-1257 (Baltic) + addCharset (new Windows1257 ()); + + // ISO-8859-2 aka ISO-LATIN-2 + addCharset (new ISO_8859_2 ()); + + // ISO-8859-4 aka ISO-LATIN-4 + addCharset (new ISO_8859_4 ()); + + // ISO-8859-5 (Cyrillic) + addCharset (new ISO_8859_5 ()); + + // ISO-8859-7 (Greek) + addCharset (new ISO_8859_7 ()); + + // ISO-8859-9 aka ISO-LATIN-5 + addCharset (new ISO_8859_9 ()); + + // ISO-8859-13 aka ISO-LATIN-7 + addCharset (new ISO_8859_13 ()); + + // ISO-8859-15 aka ISO-LATIN-9 + addCharset (new ISO_8859_15 ()); + + // KOI8 (Cyrillic) + addCharset (new KOI_8 ()); + } + + /** + * Load non-mandatory charsets. + */ + private void loadExtended () + { + if(extendedLoaded) + return; + + addCharset (new ISO_8859_3 ()); // ISO-8859-3 aka ISO-LATIN-3 + addCharset (new ISO_8859_6 ()); // ISO-8859-6 (Arabic) + addCharset (new ISO_8859_8 ()); // ISO-8859-8 (Hebrew) + + // Some more codepages + addCharset (new Cp855()); // IBM Cyrillic + addCharset (new Cp857()); // IBM Turkish + addCharset (new Cp860()); // MSDOS Portugese + addCharset (new Cp861()); // MSDOS Icelandic + addCharset (new Cp862()); // PC Hebrew + addCharset (new Cp863()); // MSDOS Can. French + addCharset (new Cp864()); // PC Arabic + addCharset (new Cp865()); // MSDOS Nordic + addCharset (new Cp866()); // MSDOS Russian + addCharset (new Cp869()); // IBM modern Greek + addCharset (new Cp874()); // IBM Thai + extendedLoaded = true; } public Iterator charsets () { + loadExtended(); return Collections.unmodifiableCollection (charsets.values ()) .iterator (); } @@ -119,7 +195,13 @@ public final class Provider extends CharsetProvider */ public Charset charsetForName (String charsetName) { - return (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase())); + Charset cs = (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase())); + if(cs == null && !extendedLoaded) + { + loadExtended(); + cs = (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase())); + } + return cs; } /** |