Подскажите пожалуйста, как можно перекодировать обычную ASCII строку в UTF-8 ?
Желательно в контексте использования под Clarion (в сети много примеров для PHP - но ничего не понял).
Заранее спасибо !

Модератор: Дед Пахом
Можно посмотреть в NetTalk от CapeSoft в модуле NetAll.clw -> AnsiCStringToUnicodeCStringЖелательно в контексте использования под Clarion
Код: Выделить всё
tcIO.mConvertStr function(*cstring p_Str, long p_FromCP, long p_ToCP)
loc:pszTemp1 &cstring
loc:pszTemp2 &cstring
loc:Len long
loc:Ret long
loc:i long
code
loc:len = len(p_Str) * 2
loc:pszTemp1 &= new(cstring(loc:len))
loc:pszTemp2 &= new(cstring(loc:len))
loc:ret = MultiByteToWideChar(p_FromCP, 0, address(p_Str), len(p_Str), address(loc:pszTemp1), loc:len)
if loc:ret = 0
Message('MultiByteToWideChar returns '&GetLastError())
.
loc:ret = WideCharToMultiByte(p_ToCP, 0 ,address(loc:pszTemp1), loc:ret, address(loc:pszTemp2),loc:Len,0, 0)
loc:pszTemp2[loc:ret+1] = '<0>'
p_Str = loc:pszTemp2
dispose(loc:pszTemp1)
dispose(loc:pszTemp2)
return(0)
tcIO.mStr_UTF8_to_ANSI function(*cstring p_Str)
code
return(self.mConvertStr(p_Str, CP_UTF8, CP_ACP))
tcIO.mStr_ANSI_to_UTF8 function(*cstring p_Str)
code
return(self.mConvertStr(p_Str, CP_ACP, CP_UTF8))