TCodePage=(cpStandard,cpGB,cpBig);//unicode 轉換類型,
const CodePageID:array[0..2] of integer=(0,936,950);
function StringToUnicode(s:string;CodePage:TCodePage):widestring;
var
SourceLen, ResultLen: Integer;
Buffer: array[0..1023] of WideChar;
begin
SourceLen := Length(s);
if SourceLen < SizeOf(Buffer) div 2 then
Result := SysAllocStringLen(Buffer, MultiByteToWideChar(CodePageID[ord(codePage)], 0,
PChar(s), SourceLen, Buffer, SizeOf(Buffer) div 2))
else
begin
ResultLen := MultiByteToWideChar(CodePageID[ord(codePage)], 0,
Pointer(s), SourceLen, nil, 0);
Result := SysAllocStringLen(nil, ResultLen);
MultiByteToWideChar(CodePageID[ord(codePage)], 0, Pointer(s), SourceLen,
Result, ResultLen);
end;
end;