Index: sdk/lib/io/string_transformer.dart |
diff --git a/sdk/lib/io/string_transformer.dart b/sdk/lib/io/string_transformer.dart |
index 2b02639f474f2cb64d2c5a5a75b346f43a20bbcf..30f74fe34fa5eeaa91e908ae1eae61c4d9d3ad97 100644 |
--- a/sdk/lib/io/string_transformer.dart |
+++ b/sdk/lib/io/string_transformer.dart |
@@ -12,6 +12,54 @@ class Encoding { |
static const Encoding ISO_8859_1 = const Encoding._internal("iso-8859-1"); |
static const Encoding ASCII = const Encoding._internal("us-ascii"); |
+ // All aliasses (in lowercase) of supported encoding from |
+ // http://www.iana.org/assignments/character-sets/character-sets.xml. |
+ static Map<String, Encoding> _nameToEncoding = <String, Encoding> { |
+ // ISO_8859-1:1987. |
+ "iso_8859-1:1987": ISO_8859_1, |
+ "iso-ir-100": ISO_8859_1, |
+ "iso_8859-1": ISO_8859_1, |
+ "iso-8859-1": ISO_8859_1, |
+ "latin1": ISO_8859_1, |
+ "l1": ISO_8859_1, |
+ "ibm819": ISO_8859_1, |
+ "cp819": ISO_8859_1, |
+ "csisolatin1": ISO_8859_1, |
+ |
+ // US-ASCII. |
+ "iso-ir-6": ASCII, |
+ "ansi_x3.4-1968": ASCII, |
+ "ansi_x3.4-1986": ASCII, |
+ "iso_646.irv:1991": ASCII, |
+ "iso646-us": ASCII, |
+ "us-ascii": ASCII, |
+ "us": ASCII, |
+ "ibm367": ASCII, |
+ "cp367": ASCII, |
+ "csascii": ASCII, |
+ "ascii": ASCII, // This is not in the IANA official names. |
+ |
+ // UTF-8. |
+ "csutf8": UTF_8, |
+ "utf-8": UTF_8 |
+ }; |
+ |
+ /** |
+ * Gets an [Encoding] object from the name of the character set |
+ * name. The names used are the IANA official names for the |
+ * character set (see |
+ * http://www.iana.org/assignments/character-sets/character-sets.xml). |
+ * |
+ * The [name] passed is case insensitive. |
+ * |
+ * If character set is not supported [:null:] is returned. |
+ */ |
+ static Encoding fromName(String name) { |
+ if (name == null) return null; |
+ name = name.toLowerCase(); |
+ return _nameToEncoding[name]; |
+ } |
+ |
/** |
* Name of the encoding. This will be the lower-case version of one of the |
* IANA official names for the character set (see |