给你个函数,直接调用就可以了,它可以实现string到unicode的转换.
type 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;
eg:
AText:=StringToUnicode(AText,cpBig);
应该没问题的.
type 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;
eg:
AText:=StringToUnicode(AText,cpBig);
应该没问题的.
s:Widestring;AssignFile(MyTextFile, 'MyTextFile.txt');
Rewrite(MyTextFile);
try
S := '[OLEDB]';
Writeln(MyTextFile, S);
finally
CloseFile(MyTextFile);
end;
MyTextFile: TextFile;
s:Widestring;
beginAssignFile(MyTextFile, 'MyTextFile.txt');
Rewrite(MyTextFile);
try
S := '[OLEDB]';
Writeln(MyTextFile, S);
finally
CloseFile(MyTextFile);
end;
end;
测试过