zoukankan      html  css  js  c++  java
  • UTF-8 delphi 函数

    unit util_utf8;
      
    interface
      
    uses Windows;
      
    type
      UTF8String = AnsiString;
      
      function AnsiToWide(const S: AnsiString): WideString;
      function WideToUTF8(const WS: WideString): UTF8String;
      function AnsiToUTF8(const S: AnsiString): UTF8String;
      function UTF8ToWide(const US: UTF8String): WideString;
      function WideToAnsi(const WS: WideString): AnsiString;
      function UTF8ToAnsi(const S: UTF8String): AnsiString;
      
    implementation
      
    function AnsiToWide(const S: AnsiString): WideString;
    var
      len: integer;
      ws: WideString;
    begin
      Result:='';
      if (Length(S) = 0) then
        exit;
      len:=MultiByteToWideChar(CP_ACP, 0, PChar(s), -1, nil, 0);
      SetLength(ws, len);
      MultiByteToWideChar(CP_ACP, 0, PChar(s), -1, PWideChar(ws), len);
      Result:=ws;
    end;
      
    function WideToUTF8(const WS: WideString): UTF8String;
    var
      len: integer;
      us: UTF8String;
    begin
      Result:='';
      if (Length(WS) = 0) then
        exit;
      len:=WideCharToMultiByte(CP_UTF8, 0, PWideChar(WS), -1, nil, 0, nil, nil);
      SetLength(us, len);
      WideCharToMultiByte(CP_UTF8, 0, PWideChar(WS), -1, PChar(us), len, nil, nil);
      Result:=us;
    end;
      
    function AnsiToUTF8(const S: AnsiString): UTF8String;
    begin
      Result:=WideToUTF8(AnsiToWide(S));
    end;
      
    function UTF8ToWide(const US: UTF8String): WideString;
    var
      len: integer;
      ws: WideString;
    begin
      Result:='';
      if (Length(US) = 0) then
        exit;
      len:=MultiByteToWideChar(CP_UTF8, 0, PChar(US), -1, nil, 0);
      SetLength(ws, len);
      MultiByteToWideChar(CP_UTF8, 0, PChar(US), -1, PWideChar(ws), len);
      Result:=ws;
    end;
      
    function WideToAnsi(const WS: WideString): AnsiString;
    var
      len: integer;
      s: AnsiString;
    begin
      Result:='';
      if (Length(WS) = 0) then
        exit;
      len:=WideCharToMultiByte(CP_ACP, 0, PWideChar(WS), -1, nil, 0, nil, nil);
      SetLength(s, len);
      WideCharToMultiByte(CP_ACP, 0, PWideChar(WS), -1, PChar(s), len, nil, nil);
      Result:=s;
    end;
      
    function UTF8ToAnsi(const S: UTF8String): AnsiString;
    begin
      Result:=WideToAnsi(UTF8ToWide(S));
    end;
      
    end.
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
      IdTCPClient, IdHTTP;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        IdHTTP1: TIdHTTP;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
    uses
      util_utf8;
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      strm: TStringStream;
    begin
      strm := TStringStream.Create('');
      try
        IdHTTP1.Get('http://gz.ganji.com/zpshichangyingxiao/', strm);
        Memo1.Clear;
        Memo1.Lines.Add(UTF8ToAnsi(strm.DataString));
      finally
        strm.Free;
      end;
    end;
     
    end.
  • 相关阅读:
    安装VMware16兼容Hyper-v+WSL2+Docker+解决0x80370102报错
    家用联通光纤开启IPv6
    配置微软Azure大数据HDInsight云集群
    Hadoop集群搭建-05安装配置YARN
    Hadoop集群搭建-04安装配置HDFS
    Hadoop集群搭建-03编译安装hadoop
    Hadoop集群搭建-02安装配置Zookeeper
    Hadoop集群搭建-01前期准备
    springMVC+request.session实现用户登录和访问权限控制
    idea+spring4+springmvc+mybatis+maven实现简单增删改查CRUD
  • 原文地址:https://www.cnblogs.com/chenmfly/p/4783258.html
Copyright © 2011-2022 走看看