function GetPyChar (const HZ: AnsiString):string ;
const
HZCode:array [0..25, 0..1] of Integer = ((1601, 1636), (1637, 1832), (1833, 2077),
(2078, 2273), (2274, 2301), (2302, 2432), (2433, 2593), (2594, 2786), (9999, 0000),
(2787, 3105), (3106, 3211), (3212, 3471), (3472, 3634), (3635, 3722), (3723, 3729),
(3730, 3857), (3858, 4026), (4027, 4085), (4086, 4389), (4390, 4557), (9999, 0000),
(9999, 0000), (4558, 4683), (4684, 4924), (4925, 5248), (5249, 5589));
var
i, j, HzOrd: Integer;
begin
i: =1;
while i <= Length (HZ)do
begin
if (HZ [i]> =# 160) and (HZ [i +1]> = # 160) then
begin
HzOrd: = (Ord (HZ [i])-160) * 100 + Ord (HZ [i + 1])- 160;
for j: =0 to 25 do
begin
if (HzOrd> = HZCode [j] [0]) and (HzOrd <= HZCode [j] [1]) then
begin
Result: = Result + Char (Byte ('A') + j);
Break;
end ;
end ;
Inc (i);
end else Result: = Result + HZ [i];
Inc (i);
end ;
end ;
//test:
procedure TForm1.Button1Click (Sender: TObject);
begin
ShowMessage (GetPyChar ('In case of a Delphi blog')); // Result: WYD Delphi BK
end ;
// Only separate Chinese characters:
function GetPyFitstChar (HZ: AnsiString): Char;
begin
case LoWord (HZ [1]) shl 8 + LoWord (HZ [2]) of
$ B0A1..$ B0C4: Result: = 'A';
$ B0C5..$ B2C0: Result: = 'B';
$ B2C1..$ B4ED: Result: = 'C';
$ B4EE..$ B6E9: Result: = 'D';
$ B6EA..$ B7A1: Result: = 'E';
$ B7A2..$ B8C0: Result: = 'F';
$ B8C1..$ B9FD: Result: = 'G';
$ B9FE..$ BBF6: Result: = 'H';
$ BBF7..$ BFA5: Result: = 'J';
$ BFA6..$ C0AB: Result: = 'K';
$ C0AC..$ C2E7: Result: = 'L';
$ C2E8..$ C4C2: Result: = 'M';
$ C4C3..$ C5B5: Result: = 'N';
$ C5B6..$ C5BD: Result: = 'O';
$ C5BE..$ C6D9: Result: = 'P';
$ C6DA..$ C8BA: Result: = 'Q';
$ C8BB..$ C8F5: Result: = 'R';
$ C8F6..$ CBF9: Result: = 'S';
$ CBFA..$ CDD9: Result: = 'T';
$ CDDA..$ CEF3: Result: = 'W';
$ CEF4..$ D188: Result: = 'X';
$ D1B9..$ D4D0: Result: = 'Y';
$ D4D1..$ D7F9: Result: = 'Z';
else
Result: = Char (0);
end ;
end ;
//test:
procedure TForm1.Button1Click (Sender: TObject);
begin
ShowMessage (GetPyFitstChar ('中国'));
end ;