我想導入一個帶有ucs2小端編碼的csv文件。我正在使用jedi compnonent(jvCsvDataset)來收集操作數據。該組件無法讀取這種編碼的數據,我需要將其轉換爲utf8。事情是,我需要在德爾福6內做到。Delphi 6將ucs-2小端文件轉換爲utf8
您是否知道「ucs2decode」函數或任何其他方法?
在此先感謝!
我想導入一個帶有ucs2小端編碼的csv文件。我正在使用jedi compnonent(jvCsvDataset)來收集操作數據。該組件無法讀取這種編碼的數據,我需要將其轉換爲utf8。事情是,我需要在德爾福6內做到。Delphi 6將ucs-2小端文件轉換爲utf8
您是否知道「ucs2decode」函數或任何其他方法?
在此先感謝!
閱讀一個WideString的文件,然後使用UTF8Encode,也許是這樣的:
function ReadUCS2FileToUTF8(const FilePath: string): UTF8String;
var
f: TFileStream;
d: WideString;
begin
f := TFileStream.Create(FilePath, fmOpenRead or fmShareDenyWrite);
try
SetLength(d, f.Size div SizeOf(WideChar));
if Length(d) > 0 then
f.ReadBuffer(d[1], Length(d) * SizeOf(WideChar));
finally
f.Free;
end;
Result := UTF8Encode(d);
end;
感謝斯泰恩桑德斯! – gman
請注意,Delphi 6中的「UTF8Encode()」和「UTF8Decode()」是不完整的。他們手動實現UTF-8,並且只處理高達3個字節的UTF-8字節序列(Unicode代碼點'U-0000'到'U + FFFF',但不是更高)。因此,爲了處理更高的代碼點,你將不得不直接使用'WideCharToMultiByte()'和'MultiByteToWideChar()'(在後面的Delphi版本中更新'UTF8Encode()'和'UTF8Decode()'以使用)。 –
使用調用WideCharToMultiByte –