URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7758
[ Назад ]

Исходное сообщение
"Perl: Преобразовать имя файла в кодировку UTF8"

Отправлено KrLL , 09-Дек-08 10:22 
Подскажите, пжл.
Получаю имя файла $file=</info/*>
Как проверить в какой кодировки имя?
Как преобразовать имя в UTF8 (Base64)?

Содержание

Сообщения в этом обсуждении
"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено NuINu , 09-Дек-08 13:14 
>Подскажите, пжл.
>Получаю имя файла $file=</info/*>
>Как проверить в какой кодировки имя?
>Как преобразовать имя в UTF8 (Base64)?

я программ проверки типа кодировки не знаю, но полагаю поскольку кодировка это практически  шифр замены, то система статистического анализа буквенных сочетаний будет правильно определять кодировку в 99 процентах случаев.

пишите :)

что и куда вы хотите преобразовать?
все в кучу смешали!!! UTF8 != Base64

вот пример как из кои8 сделать утф8
use Encode;

my $str = "Это тестовая строка в кодировке koi8r";

my $t = Encode::decode('koi8r', $str);
my $rez = Encode::encode('utf8', $t);

print "Result: $rez\n";


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено KrLL , 09-Дек-08 13:31 
В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено NuINu , 09-Дек-08 14:05 
>В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".
>

и о чем это говорит?
кстати содержать где? не в базе ли данных :)
а бейс64 применяется для чего? для того что бы враг не догадался? ;) или что бы больше мучаться?

а закодировать легко:
use Encode;
use MIME::Base64;

my $str = "Это тестовая строка в кодировке koi8r";

my $t = Encode::decode('koi8r', $str);
my $rez = encode_base64(Encode::encode('utf8', $t));

print "Result: $rez\n";



"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено vic , 09-Дек-08 14:14 
>В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".
>

ну это значит после того как распознаете и переведете в utf-8 или убедитесь что кодировка - utf-8 еще воспользоваться encode_base64().

Проще кстати будет не перекодировать а проверять что имя в нужной кодировке, если не в нужной ругаться. Не стоит брать на себя ответственность за распознание/перекодировку если есть такая возможность :)


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено Pahanivo , 10-Дек-08 09:44 
>В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".
>

))))) жесть


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено 1ight_apprentice , 10-Дек-08 17:07 
>>В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".
>))))) жесть

Base64 не содержит байтов, у которых установлен старший бит, а также кодов форматирования. UTF-8 таковыми свойствами, увы, не обладает.


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено angra , 11-Дек-08 01:29 
Неужели вы всерьез думаете, что Pahanivo не знает что такое Bases64 и вы открываете ему истину?

"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено Pahanivo , 11-Дек-08 07:17 
>>>В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".
>>))))) жесть
>
>Base64 не содержит байтов, у которых установлен старший бит, а также кодов
>форматирования. UTF-8 таковыми свойствами, увы, не обладает.

вощето вроде 2х старших байт нет - собстна потому он и 64 )))))


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено Pahanivo , 11-Дек-08 07:22 
>В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".

Ваще если я все правильно понимаю, тз требует осознанного ненужного раздувания базы как минимум на 1/8 ))


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено vic , 11-Дек-08 13:47 
>>>>В тех.задании: "содержать имя файла в кодировке UTF-8, кодированное согласно алгоритму Base64".
>>>))))) жесть
>>
>>Base64 не содержит байтов, у которых установлен старший бит, а также кодов
>>форматирования. UTF-8 таковыми свойствами, увы, не обладает.
>
>вощето вроде 2х старших байт нет - собстна потому он и 64
>)))))

1. см. определение base64, хотя бы в википедии, назван он так совсем не поэтому :)
2. см. код символа 'z' :)
3. теперь мы знаем чего не знает Pahanivo ;)


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено Pahanivo , 11-Дек-08 16:07 
>[оверквотинг удален]
>>>Base64 не содержит байтов, у которых установлен старший бит, а также кодов
>>>форматирования. UTF-8 таковыми свойствами, увы, не обладает.
>>
>>вощето вроде 2х старших байт нет - собстна потому он и 64
>>)))))
>
>1. см. определение base64, хотя бы в википедии, назван он так совсем
>не поэтому :)
>2. см. код символа 'z' :)
>3. теперь мы знаем чего не знает Pahanivo ;)

я не грил что все знаю - я знаю для чего это, а вот тонкости реализаци - как грится "придется работать - разберемся"
имхо чтобы во все вникнуть - дак стока не прожить ))


"Perl: Преобразовать имя файла в кодировку UTF8"
Отправлено Andrey Mitrofanov , 11-Дек-08 17:40 
>я не грил что все знаю - я знаю для чего это,

Эээ, брось. Поймали-то %) не на том, что не знаешь, а на том, что говоришь про то, чего не знаешь. Это раз. Теперь ещё и попался-и-пробовал-отмазаться. То есть уже два. Ну, мелочи про байт<->бит всякие... Типа, неудачно пошутил над (да - забавным) "тех.заданием" -- попал под раздачу сам. :))) "Щательнее надо. Ребята!"(с)ММЖ

Выдыхаем, расслабляемся. Все.