gpt4 book ai didi

delphi - 使用Delphi将字符串变量编码为UTF-16LE base64

转载 作者:行者123 更新时间:2023-12-01 18:39:39 25 4
gpt4 key购买 nike

我正在寻找将字符串变量编码为 UTF-16LE 和 base64 ,问题是我没有找到有关如何在 Delphi 中执行 UTF-16LE 的信息。

Python 示例:

from base64 import b64encode
b64encode('my text'.encode('UTF-16LE'))

Ruby 示例:

require "base64"
Base64.encode64('my text'.force_encoding('UTF-16LE'))

我可以在 Delphi 中做到这一点吗?

更新:

procedure TFormTest.btnTestClick(Sender: TObject);
var
dest, src: TEncoding;
srcBytes, destBytes: TBytes;
Encoder: TIdEncoderMime;
begin
Encoder := TIdEncoderMime.Create(nil);
src := TEncoding.Unicode;
srcBytes := src.GetBytes(Edit1.Text);
Edit2.Text := Encoder.EncodeBytes(srcBytes);
FreeAndNil(Encoder);

end;

是否创建了有效的 base64 UTF-16LE?

Powershell 告诉我它无效

使用命令:

(New-Object System.Net.WebClient).DownloadFile('http://localhos/update_program.exe','updater.exe'); Start-Process 'updater.exe'

输出错误:

Missing expression after unary operator '-'.

最佳答案

您所展示的内容在技术上是正确的。 String 首先被编码为 UTF-16LE 字节数组,然后这些字节被进行 Base64 编码。

由于您要调用 TIdEncoderMIME.Create() 来创建对象实例,因此您应该使用 Encode() 实例方法,而不是 EncodeBytes( ) 静态方法(在内部创建另一个实例):

procedure TFormTest.btnTestClick(Sender: TObject);
var
Encoder: TIdEncoderMIME;
begin
Encoder := TIdEncoderMIME.Create(nil);
// prior to Indy 10.6.0, use TIdTextEncoding.Unicode
// instead of IndyTextEncoding_UTF16LE...
Edit2.Text := Encoder.Encode(Edit1.Text, IndyTextEncoding_UTF16LE);
Encoder.Free;
end;

可以使用 EncodeString() 静态方法进一步简化:

procedure TFormTest.btnTestClick(Sender: TObject);
begin
// prior to Indy 10.6.0, use TIdTextEncoding.Unicode
// instead of IndyTextEncoding_UTF16LE...
Edit2.Text := TIdEncoderMIME.EncodeString(Edit1.Text, IndyTextEncoding_UTF16LE);
end;

但无论哪种方式,输出都是相同的。因此,您仍然遇到的任何问题都必须在其他地方。但您没有提供有关如何验证数据、哪些工具拒绝数据、实际报告哪些错误等的任何详细信息。

关于delphi - 使用Delphi将字符串变量编码为UTF-16LE base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com