您的位置:首页 > 移动开发

把流中的字符串转换为 UTF 格式 - 回复 "lostapple" 的问题

2008-12-26 13:53 603 查看
问题来源: http://www.cnblogs.com/del/archive/2008/12/26/1269606.html#1414232

本例效果图:



代码文件:
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.

窗体文件:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 146
ClientWidth = 406
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 323
Top = 113
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 8
Top = 8
Width = 313
Height = 105
Lines.Strings = (
'Memo1')
TabOrder = 1
end
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: