Delphi UniCode转汉字(\u 格式)、汉字转UniCode(\u 格式)
Delphi UniCode转汉字(\u 格式)、汉字转UniCode(\u 格式)
1、UniCode转汉字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function UnicodeToChinese(sStr: string ): string ;
var
i: Integer ;
index: Integer ;
temp, top, last: string ;
begin
index := 1 ;
while index >= 0 do
begin
index := Pos( '\u' , sStr) - 1 ;
if index < 0 then //非 unicode编码不转换 ,自动过滤
begin
last := sStr;
Result := Result + last;
Exit;
end ;
top := Copy(sStr, 1 , index); // 取出 编码字符前的 非 unic 编码的字符,如数字
temp := Copy(sStr, index + 1 , 6 ); // 取出编码,包括 \u,如\u4e3f
Delete(temp, 1 , 2 );
Delete(sStr, 1 , index + 6 );
Result := Result + top + WideChar (StrToInt( '$' + temp));
end ;
end ;
|
2、汉字转UniCode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function ChineseToUniCode(sStr: string ): string ; //汉字的 UniCode 编码范围是: $4E00..$9FA5 作者:滔Roy
var
w: Word ;
hz: WideString ;
i: Integer ;
s: string ;
begin
hz:=sStr;
for i:= 1 to Length(hz) do begin
w := Ord(hz[i]);
s:=IntToHex(w, 4 );
Result := Result + '\u' + LowerCase(s);
end ;
end ;
|
3、示例:
1 2 3 4 5 6 7 8 9 |
var
s,s1,s2 : string ;
begin
s1 := '滔Roy' ;
s2 := '\u6ed4\u0052\u006f\u0079' ;
s:=ChineseToUniCode(s1); {汉字到 UniCode 编码}
s:=UnicodeToChinese(s2); { UniCode 编码到汉字}
end ;
|