情況:我有一個使用UTF-8作爲內部字符串格式的外部DLL。接口函數都使用PAnsiChar來傳遞字符串。德爾福2010年:如何將UTF8編碼的PAnsiChar轉換爲UnicodeString?
我的應用程序的其餘部分使用Delphi的原生string
類型;因爲我正在與德爾福2010年,這將映射到UnicodeString
。
如何可靠地將這些PAnsiChar參數(指向UTF-8編碼的字符串)轉換爲UnicodeString?
我有這個功能,我認爲工作得很好:
function PUTF8CharToString(Text: PAnsiChar): string;
var
UText: UTF8String;
begin
UText := UTF8String(Text);
Result := string(UText);
end;
...但現在我已經運行到哪裏,結果字符串被損壞的情況下;當我將PAnsiChar保存到文件中時,沒問題;但是當我使用上面的函數轉換後保存結果字符串時,它已損壞。
或應該這工作正常,並且這是否表示其他一些內存(de)分配問題?
編輯:我終於成功地通過轉換後的字符串賦值給一個局部變量的字符串,而不是直接將其傳遞給另一個函數擺脫了內存損壞。
咄...我不明白爲什麼我沒有找到。我仍然得到一些內存損壞,但在另一個位置。也許我的對立功能(StringToPUTF8Char)也不能正常工作;但我找不到一個UnicodeStringToUTF8函數...謝謝,無論如何,艾倫! – Martijn 2010-12-19 11:47:34