如何将Base64转换成HTML?
How to convert Base64 to HTML?
我需要在 Flutter 中将 Base64 转换为 HTML,但是失败了。
这是我的 HTML 编码的 Base64 字符串:
"PGh0bWw+DQo8aGVhZD4NCiAgPHRpdGxlPlRpdGxlIG9mIHRoZSBkb2N1bWVudDwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KICA8aDE+VGhpcyBpcyBhIGhlYWRpbmc8L2gxPg0KICA8cD5UaGlzIGlzIGEgcGFyYWdyYXBoLjwvcD4NCjwvYm9keT4NCg0KPC9odG1sPg=="
我已经尝试解码,但输出格式只是一个数字数组。
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_html/flutter_html.dart';
var decoded = base64.decode(
"PGh0bWw+DQo8aGVhZD4NCiAgPHRpdGxlPlRpdGxlIG9mIHRoZSBkb2N1bWVudDwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KICA8aDE+VGhpcyBpcyBhIGhlYWRpbmc8L2gxPg0KICA8cD5UaGlzIGlzIGEgcGFyYWdyYXBoLjwvcD4NCjwvYm9keT4NCg0KPC9odG1sPg==");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: HeaderMenu(
title: Text(
'Base64 to HTML',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w600),
),
isBack: true,
icon: [],
isCenter: true,
),
body: Column(
children: [
Html(data: decoded.toString()),
],
),
);
}
将某些内容编码为 base64 的目的是将 二进制 数据转换为 ASCII 文本。 base64 编码 HTML 没有多大意义,这是 already 文本。 (但我想它可能是 base64 编码的,作为执行数据清理的某种过分热心的方式。)
无论如何,当你解码一个base64字符串时,结果应该是二进制数据。要将该字节序列视为字符串,您需要执行额外的解码步骤以指定应如何解释这些字节:作为 ASCII 文本?作为 UTF-8 编码的文本? UTF-16? UTF-32?
在您的情况下,您的 base64 字符串似乎是 UTF-8:
import 'dart:convert';
void main() {
var base64String =
"PGh0bWw+DQo8aGVhZD4NCiAgPHRpdGxlPlRpdGxlIG9mIHRoZSBkb2N1bWVudDwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KICA8aDE+VGhpcyBpcyBhIGhlYWRpbmc8L2gxPg0KICA8cD5UaGlzIGlzIGEgcGFyYWdyYXBoLjwvcD4NCjwvYm9keT4NCg0KPC9odG1sPg==";
var bytes = base64.decode(base64String);
var decoded = utf8.decode(bytes);
print(decoded);
}
打印:
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
使用 ascii.decode
也适用于您的特定情况。
我需要在 Flutter 中将 Base64 转换为 HTML,但是失败了。
这是我的 HTML 编码的 Base64 字符串:
"PGh0bWw+DQo8aGVhZD4NCiAgPHRpdGxlPlRpdGxlIG9mIHRoZSBkb2N1bWVudDwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KICA8aDE+VGhpcyBpcyBhIGhlYWRpbmc8L2gxPg0KICA8cD5UaGlzIGlzIGEgcGFyYWdyYXBoLjwvcD4NCjwvYm9keT4NCg0KPC9odG1sPg=="
我已经尝试解码,但输出格式只是一个数字数组。
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_html/flutter_html.dart';
var decoded = base64.decode(
"PGh0bWw+DQo8aGVhZD4NCiAgPHRpdGxlPlRpdGxlIG9mIHRoZSBkb2N1bWVudDwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KICA8aDE+VGhpcyBpcyBhIGhlYWRpbmc8L2gxPg0KICA8cD5UaGlzIGlzIGEgcGFyYWdyYXBoLjwvcD4NCjwvYm9keT4NCg0KPC9odG1sPg==");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: HeaderMenu(
title: Text(
'Base64 to HTML',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w600),
),
isBack: true,
icon: [],
isCenter: true,
),
body: Column(
children: [
Html(data: decoded.toString()),
],
),
);
}
将某些内容编码为 base64 的目的是将 二进制 数据转换为 ASCII 文本。 base64 编码 HTML 没有多大意义,这是 already 文本。 (但我想它可能是 base64 编码的,作为执行数据清理的某种过分热心的方式。)
无论如何,当你解码一个base64字符串时,结果应该是二进制数据。要将该字节序列视为字符串,您需要执行额外的解码步骤以指定应如何解释这些字节:作为 ASCII 文本?作为 UTF-8 编码的文本? UTF-16? UTF-32?
在您的情况下,您的 base64 字符串似乎是 UTF-8:
import 'dart:convert';
void main() {
var base64String =
"PGh0bWw+DQo8aGVhZD4NCiAgPHRpdGxlPlRpdGxlIG9mIHRoZSBkb2N1bWVudDwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KICA8aDE+VGhpcyBpcyBhIGhlYWRpbmc8L2gxPg0KICA8cD5UaGlzIGlzIGEgcGFyYWdyYXBoLjwvcD4NCjwvYm9keT4NCg0KPC9odG1sPg==";
var bytes = base64.decode(base64String);
var decoded = utf8.decode(bytes);
print(decoded);
}
打印:
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
使用 ascii.decode
也适用于您的特定情况。