java big5转换为gbk_简体繁体转换代码(Big5-GB | GBK简体-GBK繁体)

Function   Big52GB(BIG5Str:   String):   AnsiString;

{进行big5转GB内码}

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;

Function   GB2Big5(GBStr:   String):   AnsiString;

{进行GB转BIG5内码}

Var

Len:   Integer;

pGBCHTChar:   PChar;

pGBCHSChar:   PChar;

pUniCodeChar:   PWideChar;

pBIG5Char:   PChar;

Begin

pGBCHSChar   :=   PChar(GBStr);

Len   :=   MultiByteToWideChar(936,   0,   pGBCHSChar,   -1,   Nil,   0);

GetMem(pGBCHTChar,   Len   *   2   +   1);

ZeroMemory(pGBCHTChar,   Len   *   2   +   1);

//GB   CHS   ->   GB   CHT

LCMapString($804,   LCMAP_TRADITIONAL_CHINESE,   pGBCHSChar,   -1,   pGBCHTChar,   Len   *   2);

GetMem(pUniCodeChar,   Len   *   2);

ZeroMemory(pUniCodeChar,   Len   *   2);

//GB   CHT   ->   UniCode

MultiByteToWideChar(936,   0,   pGBCHTChar,   -1,   pUniCodeChar,   Len   *   2);

Len   :=   WideCharToMultiByte(950,   0,   pUniCodeChar,   -1,   Nil,   0,   Nil,   Nil);

GetMem(pBIG5Char,   Len);

ZeroMemory(pBIG5Char,   Len);

//UniCode   ->   Big5

WideCharToMultiByte(950,   0,   pUniCodeChar,   -1,   pBIG5Char,   Len,   Nil,   Nil);

Result   :=   String(pBIG5Char);

FreeMem(pBIG5Char);

FreeMem(pGBCHTChar);

FreeMem(pUniCodeChar);

End;

Function   GBCht2Chs(GBStr:   String):   AnsiString;

{进行GBK繁体转简体}

Var

Len:   Integer;

pGBCHTChar:   PChar;

pGBCHSChar:   PChar;

Begin

pGBCHTChar   :=   PChar(GBStr);

Len   :=   MultiByteToWideChar(936,   0,   pGBCHTChar,   -1,   Nil,   0);

GetMem(pGBCHSChar,   Len   *   2   +   1);

ZeroMemory(pGBCHSChar,   Len   *   2   +   1);

//GB   CHS   ->   GB   CHT

LCMapString($804,   LCMAP_SIMPLIFIED_CHINESE,   pGBCHTChar,   -1,   pGBCHSChar,   Len   *   2);

Result   :=   String(pGBCHSChar);

FreeMem(pGBCHSChar);

End;

Function   GBChs2Cht(GBStr:   String):   AnsiString;

{进行GBK简体转繁体}

Var

Len:   Integer;

pGBCHTChar:   PChar;

pGBCHSChar:   PChar;

Begin

pGBCHSChar   :=   PChar(GBStr);

Len   :=   MultiByteToWideChar(936,   0,   pGBCHSChar,   -1,   Nil,   0);

GetMem(pGBCHTChar,   Len   *   2   +   1);

ZeroMemory(pGBCHTChar,   Len   *   2   +   1);

//GB   CHS   ->   GB   CHT

LCMapString($804,   LCMAP_TRADITIONAL_CHINESE,   pGBCHSChar,   -1,   pGBCHTChar,   Len   *   2);

Result   :=   String(pGBCHTChar);

FreeMem(pGBCHTChar);

End;


版权声明:本文为weixin_30246273原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。