請教,下面的代碼是從網上找到繁體轉換簡體,測驗可以,但是問題來了,
若繁體字轉換一次可正常顯示簡體,再轉換,就亂碼了,所以請教大家,如何在里面判斷已經轉換簡體字,就
保留簡體字顯示.
目前我是在呼叫該函式時,用一個標示符判斷,但是這樣有很多要轉換時,都要定義一個標示符,比較難控制,請指點一下,或有更好的辦法,先謝謝大家了
function BIG5ToGB(BIG5Str : String): AnsiString;
var
Len: Integer;
pBIG5Char: PChar;
pGBCHSChar: PChar;
pGBCHTChar: PChar;
pUniCodeChar: PWideChar;
begin
//String -> PChar
pBIG5Char := PChar(BIG5Str);
Len := MultiByteToWideChar(950,0,pBIG5Char,-1,nil,0);
GetMem(pUniCodeChar,Len*2);
ZeroMemory(pUniCodeChar,Len*2);
//Big5 -> UniCode
MultiByteToWideChar(950,0,pBIG5Char,-1,pUniCodeChar,Len);
Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
GetMem(pGBCHTChar,Len*2);
GetMem(pGBCHSChar,Len*2);
ZeroMemory(pGBCHTChar,Len*2);
ZeroMemory(pGBCHSChar,Len*2);
//UniCode->GB CHT
WideCharToMultiByte(936,0,pUniCodeChar,-1,pGBCHTChar,Len,nil,nil);
//GB CHT -> GB CHS
LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len);
Result := String(pGBCHSChar);
FreeMem(pGBCHTChar);
FreeMem(pGBCHSChar);
FreeMem(pUniCodeChar);
end;
uj5u.com熱心網友回復:
既然你要轉換,何不轉換成unicode?uj5u.com熱心網友回復:
BambooCaep ,我不知道如何轉,請指點.uj5u.com熱心網友回復:
先用 MultiByteToWideChar把ansi的big5轉成unicode(繁體字),再用 LCMapStringW把繁體unicode轉換成簡體unicodeuj5u.com熱心網友回復:
轉成unicode碼,才是正宗。uj5u.com熱心網友回復:
提醒D2010之后的版本,才能使用 MultiByteToWideCha等函式。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95936.html
標籤:語言基礎/算法/系統設計
上一篇:關于類的繼承
