把流中的字符串转换为 UTF 格式

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  stream1,stream2: TStringStream;
  b: Byte;
  bs: string;
begin
  {建立第一个流, 使用默认的双字节编码; 流中的数据是 Memo 中的字符串}
  stream1 := TStringStream.Create(Memo1.Text, 54936);

  {把第一个流的十六进制编码显示在 Memo 中}
  bs := '';
  for b in stream1.Bytes do bs := Format(bs + '%2x ', [b]);
  Memo1.Lines.Add(bs);

  {建立第二个流, 用 UTF8 编码; 还是基于第一个流中的字符串}
  stream2 := TStringStream.Create(stream1.DataString, TEncoding.UTF8);

  {把第二个流的十六进制编码显示在 Memo 中}
  bs := '';
  for b in stream2.Bytes do bs := Format(bs + '%2x ', [b]);
  Memo1.Lines.Add(bs);

  stream1.Free;
  stream2.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Align := alTop;
  Memo1.ScrollBars := ssBoth;
  Memo1.Text := '万一的 Delphi 博客';
end;

end.
posted @   lucken  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示