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

2014/09/26 15:40
阅读数 115
问题来源: 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

 
 
 
 
 

 

 

  
  
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部