如何将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 也适用于您的特定情况。