| Index: sdk/lib/codec/encoding.dart
|
| diff --git a/sdk/lib/codec/encoding.dart b/sdk/lib/codec/encoding.dart
|
| index 50b724be6d398d50ead3e91740080f43c604f47c..40e0f2b4d83ae56b3d58b217c06016e1a13485ad 100644
|
| --- a/sdk/lib/codec/encoding.dart
|
| +++ b/sdk/lib/codec/encoding.dart
|
| @@ -20,11 +20,41 @@ const UTF8 = const Utf8Codec();
|
| * A [Utf8Codec] encodes strings to utf-8 code units (bytes) and decodes
|
| * UTF-8 code units to strings.
|
| */
|
| -// TODO(floitsch): Needs a way to specify if decoding should throw or use
|
| -// the replacement character.
|
| class Utf8Codec extends Encoding {
|
| - const Utf8Codec();
|
| + final bool _allowMalformed;
|
| +
|
| + /**
|
| + * Instantiates a new [Utf8Codec].
|
| + *
|
| + * The optional [allowMalformed] argument defines how [decoder] (and [decode])
|
| + * deal with invalid or unterminated character sequences.
|
| + *
|
| + * If it is `true` (and not overriden at the method invocation) [decode] and
|
| + * the [decoder] replace invalid (or unterminated) octet
|
| + * sequences with the Unicode Replacement character `U+FFFD` (�). Otherwise
|
| + * they throw a [FormatException].
|
| + */
|
| + const Utf8Codec({ bool allowMalformed: false })
|
| + : _allowMalformed = allowMalformed;
|
| +
|
| + /**
|
| + * Decodes the UTF-8 [codeUnits] (a list of unsigned 8-bit integers) to the
|
| + * corresponding string.
|
| + *
|
| + * If [allowMalformed] is `true` the decoder replaces invalid (or
|
| + * unterminated) character sequences with the Unicode Replacement character
|
| + * `U+FFFD` (�). Otherwise it throws a [FormatException].
|
| + *
|
| + * If [allowMalformed] is not given, it defaults to the `allowMalformed` that
|
| + * was used to instantiate `this`.
|
| + */
|
| + String decode(List<int> codeUnits, { bool allowMalformed }) {
|
| + if (allowMalformed == null) allowMalformed = _allowMalformed;
|
| + return new Utf8Decoder(allowMalformed: allowMalformed).convert(codeUnits);
|
| + }
|
|
|
| Converter<String, List<int>> get encoder => new Utf8Encoder();
|
| - Converter<List<int>, String> get decoder => new Utf8Decoder();
|
| + Converter<List<int>, String> get decoder {
|
| + return new Utf8Decoder(allowMalformed: _allowMalformed);
|
| + }
|
| }
|
|
|