myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Перекодировка в скрипте Lua 5.14 из CP-1251 в UTF-8, Источник в CP-1251 ( http://bash.org.ru/random ), получатель UTF-8

Теги
Нет тегов для показа
ILYA INDIGO
сообщение 12.12.2011, 1:43
Сообщение #1


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 9.2.2009
Пользователь №: 2 164
Спасибо сказали: 0 раз




Имеем сервер случайных баш-приколов http://bash.org.ru/random
К сожалению, имеем его только в кодировке CP-1251.
Имеем мой тестовый хаб на PtokaX 0.4.2.0 на GNU/Linux openSUSE 12.1 x86_64, работающий в кодировке UTF-8.
Имеем lua-script AnekBot v1.0 beta by alex82 (Если знаете новее или лучше ткните мне в него ссылкой big_smile.gif )
Имеем парсирующую функцию
Код
tParse[funcnumber] = function(data)
    local _,_,result = string.find(data,"<div class=\"text\">(.-)</div>")
    return result or "На http://bash.org.ru/random изменилась структура web-документа!"
end

Нужно перед return, перекодировать result в UTF-8.
1 Как это сделать? Я слышал что это как то делается с помощью таблицы преобразования, но как именно я не понял.
2 Возможно ли это сделать какой-нибудь lua-библиотекой?
3 Возможно ли это сделать обращаясь к средствам Linux?
Причина редактирования: Для рекламы своих хабов есть специальная тема. | Saymon21
Go to the top of the page
+Quote Post
Артём
сообщение 12.12.2011, 2:05
Сообщение #2


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




http://mydc.ru/topic334.html может и не в тему, но мало ли big_smile.gif


Спасибо сказали:
Go to the top of the page
+Quote Post
Saymon21
сообщение 12.12.2011, 2:09
Сообщение #3


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




берём, то, что дал Артём и примерно так
Код
result = AnsiToUtf8(result)
return result -- дальше сам.


Цитата
3 Возможно ли это сделать обращаясь к средствам Linux?

iconv


Спасибо сказали:
Go to the top of the page
+Quote Post
ILYA INDIGO
сообщение 12.12.2011, 2:46
Сообщение #4


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 9.2.2009
Пользователь №: 2 164
Спасибо сказали: 0 раз




Раскрывающийся текст
Код
tParse[funcnumber] = function(data)
    local cp1251=
    {
        [128]='\208\130',[129]='\208\131',[130]='\226\128\154',[131]='\209\147',[132]='\226\128\158',[133]='\226\128\166',
        [134]='\226\128\160',[135]='\226\128\161',[136]='\226\130\172',[137]='\226\128\176',[138]='\208\137',[139]='\226\128\185',
        [140]='\208\138',[141]='\208\140',[142]='\208\139',[143]='\208\143',[144]='\209\146',[145]='\226\128\152',
        [146]='\226\128\153',[147]='\226\128\156',[148]='\226\128\157',[149]='\226\128\162',[150]='\226\128\147',[151]='\226\128\148',
        [152]='\194\152',[153]='\226\132\162',[154]='\209\153',[155]='\226\128\186',[156]='\209\154',[157]='\209\156',
        [158]='\209\155',[159]='\209\159',[160]='\194\160',[161]='\209\142',[162]='\209\158',[163]='\208\136',
        [164]='\194\164',[165]='\210\144',[166]='\194\166',[167]='\194\167',[168]='\208\129',[169]='\194\169',
        [170]='\208\132',[171]='\194\171',[172]='\194\172',[173]='\194\173',[174]='\194\174',[175]='\208\135',
        [176]='\194\176',[177]='\194\177',[178]='\208\134',[179]='\209\150',[180]='\210\145',[181]='\194\181',
        [182]='\194\182',[183]='\194\183',[184]='\209\145',[185]='\226\132\150',[186]='\209\148',[187]='\194\187',
        [188]='\209\152',[189]='\208\133',[190]='\209\149',[191]='\209\151'
    }
    local nmdc =
    {
        [36] = '$',
        [124] = '|'
    }
    cp1251_utf8 = function(s)
        local r, b = ''
        for i = 1, s and s:len() or 0 do
            b = s:byte(i)
            if b < 128 then
                r = r..string.char(b)
            else
                if b > 239 then
                    r = r..'\209'..string.char(b-112)
            elseif b > 191 then
                r = r..'\208'..string.char(b-48)
            elseif cp1251[b] then
                r = r..cp1251[b]
            else
                r = r..'_'
            end
        end
        end
        return r
    end
    local _,_,result = string.find(data,"<div class=\"text\">(.-)</div>")
    return cp1251_utf8(result) or "На http://bash.org.ru/random изменилась структура web-документа!"
end

Спасибо помогло! big_smile.gif)
Причина редактирования: Под спойлер код. | Saymon21
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsНужно сделать изменение в скрипте Антипорно
Переделать переменную в функцию
5 thehawk 9 703 21.10.2014, 21:23 Посл. сообщение: thehawk
No new Topic has attachmentsПроблема на PtоkaX 0.4.1.2 в скрипте
Проблема на PtоkaX 0.4.1.2 в скрипте
23 sania 25 726 23.2.2011, 15:37 Посл. сообщение: Saymon21
No New Posts Помощь в скрипте
5 Sinsei 9 177 18.10.2010, 12:35 Посл. сообщение: Saymon21
No New Posts Topic has attachmentsтекст в скрипте
13 random name 15 351 14.4.2010, 15:59 Посл. сообщение: jumshut
No New Posts Не могу разобраться с кодировкой в скрипте
Не могу разобраться с кодировкой в скрипте
2 a97873 7 338 5.3.2010, 17:53 Посл. сообщение: a97873
No New Posts От: Ошибка в скрипте
От темы с ID: 3027
0 Артём 4 964 27.1.2010, 12:24 Посл. сообщение: Артём
No New Posts Помогите разрешить проблемку в скрипте
4 F I L I N 7 653 30.11.2009, 10:30 Посл. сообщение: Nickolya
No New Posts От: Заменил практически все картинки в скрипте AscIIArtBot
От темы с ID: 2064
6 Setuper 10 302 9.6.2009, 19:19 Посл. сообщение: Otshelnik-Fm
No New Posts Topic has attachmentsПомогите Исправить Ошибку В Скрипте
API1
11 Артём 17 161 5.4.2009, 9:08 Посл. сообщение: Артём
No New Posts От: Помогите Исправить Ошибку В Скрипте
От темы с ID: 1715
0 Wariner 5 081 4.4.2009, 16:01 Посл. сообщение: Wariner
No New Posts Topic has attachmentsПомогите Исправить Ошибку В Скрипте
API2
3 Артём 7 682 31.3.2009, 9:44 Посл. сообщение: Артём
No New Posts Скрипт Отчёта О Действиях Опов Мастеру Хаба (с Указанием Ника Мастера В Скрипте,которому Должен Присылаться Отчёт О Банах, Киках И Тому Подобное )
Ptokax 0.4.1.1
0 Серый 5 490 2.2.2009, 22:59 Посл. сообщение: Серый
Closed Мелоч В Скрипте(полосочка)
не ругайтесь
4 eL50ff 8 080 18.12.2008, 2:16 Посл. сообщение: eL50ff

 



RSS Сейчас: 23.11.2024, 8:49