DELPHI 中文处理
1.中文转拼音
function TForm1.yHzToPy(HZ: string): char; begin case Word(HZ[1])shl 8+Word(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'; $D189..$D4D0:result:='Y'; $D4D1..$D7F9:result:='Z'; else result:=char(32); end; end; procedure TForm1.SpeedButton1Click(Sender: TObject); var i:integer; s:string; begin s:=''; i:=1; edit2.Clear; while i<Length(edit1.Text) do begin s:=Copy(edit1.Text,i,2); if s>=Chr(128) then begin i:=i+2; edit2.Text:=edit2.Text+yHZToPY(s); end; end; end; function UChineseMN(sr: String): String; var C1, Len1, C2: Integer; ir : Word; FResult : String; begin FResult := ''; C1 := 1; Len1 := Length(sr); while (C1<=Len1) do begin if (ord(sr[C1])>=160) and (ord(sr[C1+1])>=160) then begin ir := (ord(sr[C1])-160)*100 + ord(sr[C1+1])-160; C2 := 0; while (C2<=26) do begin if (ir>=ChinaCode[C2,0]) and (ir<=ChinaCode[C2,1]) then begin FResult := FResult+chr(C2+ord('a')); break; end; C2 := C2 + 1; end; C1 := C1 + 2; end else if ( ( ord(sr[C1]) >=65 ) and ( ord(sr[C1]) <91 ) or ( ord(sr[C1] ) >=97 ) and ( ord(sr[C1]) <123 ) or ( ord(sr[C1]) >=48 ) and (ord(sr[C1]) <58) ) then begin FResult := FResult+sr[C1]; C1 := C1 + 1; end else C1 := C1 + 2; end; Result := FResult; end;
2.中文转字符
var w : Word; c : WideChar; ws: WideString; s : string; begin {准备工作} ws := '万一'; c := ws[1]; //ShowMessage(c); {万} {从汉字到 UniCode 编码} w := Ord(c); {返回十进制数 : 19975} w := Word(c); {返回十进制数 : 19975} s := Format('%.4x',[Ord(c)]); {返回十六进制的字符串: 4E07 } s := IntToHex(Ord(c), 4); {返回十六进制的字符串: 4E07 } {从 UniCode 编码到汉字} c := #19975; {万} c := #$4E07; {万} c := #$4e07; {万} c := WideChar(19975); {万} c := WideChar($4E07); {万} end;