KerberX

Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Pahuchiy1 Нашёл одну библиотеку, написанную tavria2. Копируешь этот код в глобальные функции. Код: if not ConvertString then ConvertString = {}; end ConvertString.Path = _SourceFolder.."\\AutoPlay\\Scripts\\ConvertString.dll"; -- function ConvertString.Convert(sString, iSourceEncoding, iOutEncoding) local hDLL = Library.Load(ConvertString.Path); hDLL:SetReturnType_(MEMEX_RETURNTYPE_STRING); local sRet = hDLL.Convert(sString, iSourceEncoding, iOutEncoding); hDLL:Close_(); -- return sRet; end -- function ConvertString.Win1251ToUTF8(sString) return ConvertString.Convert(sString, 1251, 65001); end function ConvertString.UTF8ToWin1251(sString) return ConvertString.Convert(sString, 65001, 1251); end -- function ConvertString.FixUTF8(s, replacement) local p, len, invalid = 1, #s, {} while p <= len do if p == s:find("[%z\1-\127]", p) then p = p + 1 elseif p == s:find("[\194-\223][\128-\191]", p) then p = p + 2 elseif p == s:find( "\224[\160-\191][\128-\191]", p) or p == s:find("[\225-\236][\128-\191][\128-\191]", p) or p == s:find( "\237[\128-\159][\128-\191]", p) or p == s:find("[\238-\239][\128-\191][\128-\191]", p) then p = p + 3 elseif p == s:find( "\240[\144-\191][\128-\191][\128-\191]", p) or p == s:find("[\241-\243][\128-\191][\128-\191][\128-\191]", p) or p == s:find( "\244[\128-\143][\128-\191][\128-\191]", p) then p = p + 4 else s = s:sub(1, p-1)..replacement..s:sub(p+1) table.insert(invalid, p) end end return s, invalid end | Здесь указываешь путь к DLL. Код: ConvertString.Path = _SourceFolder.."\\AutoPlay\\Scripts\\ConvertString.dll"; | И используешь. Код: local sUTF8 = TextFile.ReadToString("UTF8.xml"); Dialog.Message("", string.sub(ConvertString.UTF8ToWin1251(sUTF8), 1, 512)); | Можно использовать и другие кодировки. Все поддерживаемые кодировки и их ID записаны в файле ConvertString.doc. Код: ConvertString.Convert(sString, iSourceEncoding, iOutEncoding); -- sString - Строка для конвертирования -- iSourceEncoding - Идентификатр кодировки исходной строки -- iOutEncoding - ID нужной кодировки | В архиве все нужные файлы. Требуется плагин MemoryEx. https://yadi.sk/d/pSRG2z2roWWbr | Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 19:37 08-02-2016 | Исправлено: KerberX, 01:44 09-02-2016 |
|