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

如何在Delphi中获取字符ó的UTF-8编码Base64结果w7M=?

在Delphi中获取UTF-8字符集的Base64编码结果(w7M=)

你提到的TIdEncoderMIME.EncodeString和EncdDecd.EncodeString默认采用非UTF-8字符集(如ISO-8859-1)编码,因此要得到目标结果,核心思路是先将字符串转换为UTF-8字节数组,再对字节数组执行Base64编码。以下是几种可行方案:

方案1:基于Indy库的实现

利用TIdEncoderMIME的EncodeBytes方法直接处理UTF-8字节数组:

uses IdEncoderMIME, SysUtils;

function GetUTF8Base64(const AStr: string): string;
var
  UTF8Bytes: TBytes;
begin
  UTF8Bytes := TEncoding.UTF8.GetBytes(AStr);
  Result := TIdEncoderMIME.EncodeBytes(UTF8Bytes);
end;

// 调用示例:
// ShowMessage(GetUTF8Base64('ó')); // 输出w7M=

方案2:基于EncdDecd库的实现

先转UTF-8字节数组,再用EncodeBase64处理:

uses EncdDecd, SysUtils;

function GetUTF8Base64(const AStr: string): string;
var
  UTF8Bytes: TBytes;
  Base64Buffer: string;
begin
  UTF8Bytes := TEncoding.UTF8.GetBytes(AStr);
  SetLength(Base64Buffer, EncodeBase64(UTF8Bytes[0], Length(UTF8Bytes), False));
  EncodeBase64(UTF8Bytes[0], Length(UTF8Bytes), Base64Buffer);
  Result := Base64Buffer;
end;

// 调用示例:
// ShowMessage(GetUTF8Base64('ó')); // 输出w7M=

方案3:直接转换UTF-8字符串编码

借助Delphi的UTF8String类型直接转换后编码:

uses SysUtils, EncdDecd;

function GetUTF8Base64(const AStr: string): string;
var
  UTF8Str: UTF8String;
begin
  UTF8Str := UTF8String(AStr);
  Result := EncodeString(PAnsiChar(UTF8Str), Length(UTF8Str));
end;

以上方案的核心都是先将目标字符串转为UTF-8编码的字节序列,再对序列做Base64编码,最终即可得到w7M=的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:55:09