parse 静态方法
- String uri
将字符串解析为 data URI。
字符串必须具有以下格式:
'data:' (type '/' subtype)? (';' attribute '=' value)* (';base64')? ',' data
其中 type
、subtype
、attribute
和 value
根据 RFC-2045 指定,而 data
是一系列 URI 字符(RFC-2396 uric
)。
这意味着所有字符都必须是 ASCII,但 URI 可以包含用于解释非 ASCII 字节值的百分号转义,以便将其转换为相应的字符串。
解析会检查 Base64 编码的数据是否有效,并将其规范化为使用默认的 Base64 字母表并使用填充。非 Base64 数据将使用必要的百分号转义进行转义,以便使其有效,并使现有的转义变为小写。
如果它们的某个部分后来被发现包含无法成功解码为字符串的内容,则访问这些单独的部分可能会失败,例如如果现有的百分号转义表示的字节无法被选择的 Encoding 解码(请参阅 contentAsString)。
如果 uri
不是一个有效的 data URI,则抛出 FormatException。
实现
static UriData parse(String uri) {
if (uri.length >= 5) {
int dataDelta = _startsWithData(uri, 0);
if (dataDelta == 0) {
// Exact match on "data:".
return _parse(uri, 5, null);
}
if (dataDelta == 0x20) {
// Starts with a non-normalized "data" scheme containing upper-case
// letters. Parse anyway, but throw away the scheme.
return _parse(uri.substring(5), 0, null);
}
}
throw FormatException("Does not start with 'data:'", uri, 0);
}