• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

            路漫漫,長(zhǎng)修遠(yuǎn),我們不能沒有錢
            隨筆 - 173, 文章 - 0, 評(píng)論 - 257, 引用 - 0
            數(shù)據(jù)加載中……

            昨天開始打算寫cmpp3.0的網(wǎng)關(guān),于是拿了華為的demo反編譯了一下,發(fā)現(xiàn)n多漢字都編程了unicode編碼,于是自己寫了一個(gè)unicode轉(zhuǎn)漢字的程序,share給大家

            幾個(gè)轉(zhuǎn)碼的函數(shù) unicode string utf8 anscii 之間的轉(zhuǎn)換 delphi

            /** 主程序,包含幾個(gè)轉(zhuǎn)碼的函數(shù)

            *   作者:劉昆

            *   最后修改日期:  2004-11-18 

            *   以上代碼免費(fèi),若直接引用一下代碼請(qǐng)告知,并保留此注釋

            *   作為一名程序員應(yīng)該有最基本的職業(yè)道德*/

            unit MainForm;

            interface

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

            type
              TFormMain = class(TForm)
                Panel1: TPanel;
                Memo1: TMemo;
                ComboBox1: TComboBox;
                Button1: TButton;
                Memo2: TMemo;
                procedure Button1Click(Sender: TObject);
              private
                function StrToUTF8(str: WideString): string;
                function StrToASC(Str: string): string;
                function GB2Unicode(Str: WideString): string; overload;
                //function GB2Unicode(Str: string): string; overload;
                function U2GB(Str: string): string;
                function UTF8ToStr(const str: UTF8String): string;
                function HexToInt(const Str: string): integer;
                function HexIndex(const c: Char): Integer;
                { Private declarations }
              public
                { Public declarations }
              end;

            var
              FormMain: TFormMain;

            implementation

            {$R *.dfm}

            { TFormMain }

            function TFormMain.StrToASC(Str: string): string;
            var
              TmpStr: string;
              TmpPchar: Pchar;
              i: integer;
            begin
              result := '';
              TmpStr := '';
              TmpPchar := pchar(Str);
              for i := 0 to length(TmpPchar) - 1 do
                TmpStr := TmpStr + format('%2.2x', [ord(TmpPchar[i])]);

              result := TmpStr;
            end;

            function TFormMain.StrToUTF8(str: WideString): string;
            var
              s: pchar;
              i: integer;
              tmp: string;
            begin
              tmp := '';
              result := '';
              s := pchar(Utf8encode(str));
              for i := 0 to strlen(s) do begin
                tmp := tmp + format('%2.2x', [ord(s[i])]);
              end;
              result := tmp;
            end;


            function TFormMain.UTF8ToStr(const str: UTF8String): string;
            var
              s: pchar;
              i: integer;
              tmp: string;
            begin
              tmp := '';
              result := '';
              s := PChar(str);
              i := 0;
              while i < length(s) do begin
                tmp := tmp + chr(HexToInt(s[i] + s[i + 1]));
                inc(i, 2);
              end;
              result := Utf8Decode(tmp);
            end;

            function TFormMain.GB2Unicode(Str: WideString): string;
            var
              i: Integer;
            begin
              Result := '';
              for i := 1 to Length(Str) do
                Result := Result + Format('%4.4x', [ord(Str[i])]);
            end;


            procedure TFormMain.Button1Click(Sender: TObject);
            begin
              case ComboBox1.ItemIndex of
                0: memo2.Lines.Add(GB2Unicode(memo1.Lines.Text));
                1: memo2.Lines.Add(StrToUTF8(memo1.Lines.Text));
                2: memo2.Lines.Add(UTF8ToStr(memo1.Lines.Text));
                3: memo2.Lines.Add(U2GB(StringReplace(memo1.Lines.Text, '\u', '', [rfReplaceAll])));
                4: memo2.Lines.Add(StrToASC(memo1.Lines.Text));
              end;
            end;

            function TFormMain.HexToInt(const Str: string): integer;
            var p: pchar;

            begin
              result := -1;
              if length(str) > 2 then exit;
              p := pchar(str);

              if (HexIndex(p[0]) <> -1) and (HexIndex(p[1]) <> -1) then
                result := HexIndex(p[0]) * $10 + HexIndex(p[1]);
            end;

            function TFormMain.HexIndex(const c: Char): Integer;
            const Digits: array[0..15] of Char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
            var i: integer;
            begin
              result := -1;
              if (not (UpCase(c) in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'])) then
                exit;

              for i := 0 to high(digits) do
                if Digits[i] = UpCase(c) then begin
                  result := i;
                  break;
                end;
            end;


            function TFormMain.U2GB(Str: string): string;
            var s: pchar;
              i: integer;
              tmp: string;
            begin
              tmp := '';
              result := '';
              s := PChar(str);
              i := 0;
              while i < length(s) do begin
                tmp := tmp + chr(HexToInt(s[i + 2] + s[i + 3])) + chr(HexToInt(s[i] + s[i + 1]));//unicode轉(zhuǎn)換時(shí),高低位互換
                inc(i, 4);
              end;
              result := widechartostring(pWideChar(tmp + #0#0#0#0));
            end;

            end.


            posted on 2004-11-19 05:44 Khan 閱讀(1894) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Delphi

            久久久久亚洲AV无码麻豆| 久久本道伊人久久| 久久国产美女免费观看精品| 久久99精品久久久久子伦| 中文精品久久久久人妻不卡| 中文字幕热久久久久久久| 99蜜桃臀久久久欧美精品网站| 久久午夜无码鲁丝片秋霞 | 亚洲精品国产自在久久| 久久久久亚洲AV成人网| 少妇久久久久久被弄到高潮 | 欧洲性大片xxxxx久久久| 亚洲精品乱码久久久久久蜜桃 | 人人狠狠综合久久亚洲88| 久久最新精品国产| 久久久久亚洲AV成人网人人网站 | 伊人久久综合无码成人网| 亚洲伊人久久大香线蕉综合图片| 精品国产99久久久久久麻豆| 国产人久久人人人人爽| 欧美激情精品久久久久| 日日狠狠久久偷偷色综合96蜜桃| 综合网日日天干夜夜久久| 久久电影网一区| 亚洲综合久久久| 国内精品伊人久久久久av一坑| 久久97久久97精品免视看秋霞| 久久91精品国产91| 2021久久国自产拍精品| 精品久久久久久无码免费| 久久成人国产精品免费软件| 久久久久综合网久久| 久久精品国产男包| 国内精品久久久久久野外| 2020国产成人久久精品| 久久久久久狠狠丁香| 亚洲级αV无码毛片久久精品| 久久国产精品波多野结衣AV| 久久无码人妻一区二区三区 | 伊人热热久久原色播放www| 国产精品美女久久久m|