首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Delphi将字符串变量编码为UTF-16LE base64

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

Stack Overflow用户
提问于 2016-07-15 23:39:29
回答 1查看 2K关注 0票数 1

我正在寻找编码为UTF-16LE和base64的字符串变量,问题是我没有找到任何关于如何在Delphi中做UTF-16LE的东西。

Python中的示例:

代码语言:javascript
复制
from base64 import b64encode
b64encode('my text'.encode('UTF-16LE'))

Ruby中的示例:

代码语言:javascript
复制
require "base64"
Base64.encode64('my text'.force_encoding('UTF-16LE'))

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

更新:

代码语言:javascript
复制
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告诉我它是无效的

要使用的命令:

代码语言:javascript
复制
(New-Object System.Net.WebClient).DownloadFile('http://localhos/update_program.exe','updater.exe'); Start-Process 'updater.exe'

输出错误:

代码语言:javascript
复制
Missing expression after unary operator '-'.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-16 00:43:26

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

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

代码语言:javascript
复制
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()静态方法进一步简化:

代码语言:javascript
复制
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;

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38400101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档