function GBToUnicode(wGB: word): word;
var
WideChars: array[0..1] of WideChar;
AnsiChars: array[0..3] of Char;
begin
AnsiChars[0] := Char(Hi(wGB));
AnsiChars[1] := Char(Lo(wGB));
AnsiChars[2] := #0;
AnsiChars[3] := #0;
MultiByteToWideChar(936,0,AnsiChars,2,WideChars,1);
Move(WideChars, AnsiChars, 2);
result := Byte(AnsiChars[0]) * $100 + Byte(AnsiChars[1]);
end;
function UnicodeToGB(wUnicode: word): word;
var
WideChars: array[0..1] of WideChar;
AnsiChars: array[0..3] of Char;
bUseDefault: Bool;
CharDefault: Char;
iCount: integer;
begin
Move(wUnicode, wideChars[0], 2);
WideChars[1] := WideChar(0);
CharDefault := #0;
iCount := WideCharToMultiByte(936, 0, WideChars, 2,
AnsiChars, 4, @CharDefault,@bUseDefault);
if not bUseDefault then
begin
if AnsiChars[1] = #0 then
begin
AnsiChars[1] := AnsiChars[0];
Ansichars[0] := #0;
end;
result := Byte(AnsiChars[0]) * $100 + Byte(AnsiChars[1]);
end
else
result := byte(CharDefault);
end;