PureBasic: UTF8 to ANSI

 Решился написать простую конверсию кодировок.Вышло почти четко, но на выходе образовался лишний нолик. Вечером уже тупил и оставил проверку "на всякий пожарный случай".


f$="1.txt"
fs=FileSize(f$)
*pszCode=AllocateMemory(fs)
ReadFile(0,f$)
ReadData(0,*pszCode,fs)
CloseFile(0)
nLength = MultiByteToWideChar_(#CP_UTF8, 0, *pszCode, fs, 0, 0);
*bstrWide = AllocateMemory(nLength*2);
MultiByteToWideChar_(#CP_UTF8, 0, *pszCode, fs, *bstrWide, nLength);
nLength = WideCharToMultiByte_(#CP_ACP, 0, *bstrWide, -1, 0, 0, 0, 0);
*pszAnsi = AllocateMemory(nLength)

;Debug nLength
WideCharToMultiByte_(#CP_ACP, 0, *bstrWide, -1, *pszAnsi, nLength, 0, 0);

; Debug Len(PeekS(*pszAnsi,-1,#PB_Ascii))
; Debug PeekA(*pszAnsi+nLength)
CreateFile(0,"11.txt")
WriteData(0,*pszAnsi,nLength-1)
CloseFile(0)
FreeMemory(*pszAnsi)
FreeMemory(*bstrWide)
FreeMemory(*pszCode)

Дополнение. слепил простой конвертер


Комментарии