You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart与Java中XML转Base64编码结果不一致问题求助

Dart与Java Base64编码结果不一致的解决方法

问题根源

Java的String.getBytes()默认采用平台字符编码(如Windows下的GBK、类Unix系统的UTF-8),而Dart的String.codeUnits返回的是字符串的UTF-16代码单元,二者转换出的字节数组完全不同,最终导致Base64编码结果差异。

统一编码的解决方案

要让两边结果一致,必须保证字符串转字节数组时使用相同的字符编码,推荐使用通用的UTF-8:

Java代码修改

指定UTF-8编码转换字节数组,避免平台依赖:

import java.nio.charset.StandardCharsets;
import java.util.Base64;

byte[] array = invoiceHashValue_WithQRHash.getBytes(StandardCharsets.UTF_8);
String invoiceEncodeData = Base64.getEncoder().encodeToString(array);

Dart代码修改

使用UTF-8编码替代codeUnits转换字节数组:

import 'dart:convert';

List<int> array = utf8.encode(invoiceHashValue_WithQRHash);
String invoiceEncodeData = base64Encode(array);

调整后,Java和Dart会基于相同的UTF-8字节数组生成Base64编码,结果将完全匹配。

内容的提问来源于stack exchange,提问作者Scribes Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:17:14