我正在开发一个 Delphi 项目,需要解码从二维码中提取的 base64 字符串。二维码包含文本数据、日期和数值的混合。以下是我正在使用的 base64 字符串的示例:
AT9NVU5JUiBBQkRVTExBSCBBTE1VTklGIEZBQ1RPUlkgRk9SIFBMQVNUSUMgUElQRVMgJiBGSVRUSU5HUyBDTy4CDzMwMDUyODA3OTYwMDAwMwMTMjAyNC0xMC0xM1QwNDo0MDoyMwQINDM5NTIuNDEFBzU3MzIuOTIGLFdPMkt1TE9CS2tkMkdRSnU1ZTA3Zzd3RU5vVXFoVy92UFZVTzA5UkdWTzQ9B2BNRVFDSUVPYm95MjRmNExMYzRFeDlEdkpqbUxnYU5BWS9Ybmo2UGhlUWNxYVYwbUxBaUJjVDZlZ2VpKzBXMFhNbVc1bW9FOWh5QUFwdjJCRUtXS2t6dWJ5UENKSGdnPT0IWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABKjKpalSynCgT1a7cnHqONrPEWyCpcqx2PLnhzmXsH1CtjSbfljxm5adWyeZ2ekTcynTBhMXAkmW85x+SGllB5w=
当我尝试使用 Delphi 中的 TNetEncoding.Base64.Decode 对其进行解码时,出现以下错误:
No mapping for the Unicode character exists in the target multi-byte code page.
我注意到,如果二维码字符串比上面的例子短,就不会发生错误。我还尝试了下一个方法,但仍然出现相同的错误:
DecodedBytes := TNetEncoding.Base64.DecodeStringToBytes(QRstr);
DecodeString := TEncoding.UTF8.GetString(DecodedBytes);
任何建议或示例代码都将不胜感激!
示例中的二维码编码数据包含无法转换为 Unicode 字符串的二进制信息。
您的代码不会因 Base64 解码而失败,而是在以下行中将字节转换为字符串时失败:
您必须
DecodedBytes
根据其二进制格式规范来处理和解析它。