Regarding to
[url=http://forum.pspad.com/read.php?6,64691,64820,page=2#msg-64820]the
topic[/url].
MSDN:
--------------------------------------------------------------------------------
_Windows XP and later:_ MB_ERR_INVALID_CHARS is the only
dwFlags value supported by Code page 65001
(UTF-8).--------------------------------------------------------------------------------
So you can pass MB_ERR_INVALID_CHARS to our function and get the same behavior
as from the Delphi built-in:
const
MB_ERR_INVALID_CHARS = 8;
function Utf8Decode(const Source: UTF8String): WideString; // my function
var
L: Integer;
Dest: WideString;
begin
L := Length(Source);
SetLength(Dest, L);
SetLength(Dest, MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
Pointer(Source), L, Pointer(Dest), L));
Result := Dest;
end;
begin
if Utf8Decode(Text) = '' then
// treat as ANSI
end;
This will work only since Windows XP and later, Windows 2000 requires dwFlags=0.
--
<http://forum.pspad.com/read.php?4,45099,64824>
PSPad freeware editor http://www.pspad.com