LINUX.ORG.RU

не отображаются русские символы

 ,


0

2

имеется самописный биллинг на перл который крутится на freebsd+mysql5.5

все работает но есть загвоздка, когда ввожу русские символы то перл скрипт в get/post передает их вот в таком виде %26%231081%3B%26%231081%3B

то есть каждая буква представляет собой код например %26%231081%3B

как лечить? чтото делать с перл скриптом или с локализацией системы?

сейчас в mc вместо русских букв везде ? в nano все русское, в коммандной строке все русское, в mysql базу если в ручную то все пишется и отображается по русски.

куда смотреть и что вертеть?

мужики, выручайте, в очередной раз. второй день бьюсь

когда ввожу русские символы то перл скрипт в get/post передает их вот в таком виде %26%231081%3B%26%231081%3B

Это нормально, в URL по RFC все символы за исключением разрешенных кодируются таким образом

annulen ★★★★★
()
Ответ на: комментарий от annulen

а как в скрипте это раскодировать? чтото типо такого сделать можно? $str=~s/([^0-9A-Za-z\?&=:;])/sprintf(«%%%x», ord($1))/eg;

diakon2
() автор топика
Ответ на: комментарий от redgremlin

вы уверены что это именно то что мне нужно? там регулярка в примере $string =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; которая на мой взгляд раскодирует двоичные коды типа %2F %3D и тд, но у меняже кодировка какаято другая. сейчас таблица и система испольует локаль koi8-r но даже когда система была полностью латинская то ввод кирилицы выдавал тотже результат, а именно %26%231081%3B на каждый вводимый\выводимый символ был составлен код типа %26-код символа-%3B

вы уверены что то что вы скинули мне это именно оно?

diakon2
() автор топика
Ответ на: комментарий от redgremlin

есть такая виндовая програмка цтирлиц 4 называется, она занимается перекодированием из одной кодировки в другую, сначала когда я скопировал туда %26%231092%3B% то она сразу перевела эту надпись в ф а после нажав декодировать она перевела и это в кирилическую букву

что делать народ?

diakon2
() автор топика
Ответ на: комментарий от diakon2

вы уверены что это именно то что мне нужно?

$ echo "тест" | perl -MURI::Escape -e '$_=<>; print uri_escape($_);'
%D1%82%D0%B5%D1%81%D1%82%0A
$ echo "%D1%82%D0%B5%D1%81%D1%82%0A" | perl -MURI::Escape -e '$_=<>; print uri_unescape($_);'
тест



Остальное не распарсил.

redgremlin ★★★★★
()

Там консоль если не ошибаюсь до 10 версии Фришки в консоли с выводом unicode какие то траблы

pinachet ★★★★★
()
Ответ на: комментарий от redgremlin

так я и пишу, у меня каждый символ кодируется вот так %26%231081%3B а у вас %D1

н еужели я один вижу разницу?

diakon2
() автор топика
Ответ на: комментарий от diakon2

это закодированные HTML::Entities, конкретно

"%26%231081%3B" -> "й"
(тут мне не удаётся нераскодированный символ вставить, LOR исправляет даже внутри code)

$ perl -CO -MHTML::Entities -MURI::Escape -le 'print decode_entities uri_unescape "%26%231081%3B"'
й

P.S. LOR не лучшее место для оперативного общения о Perl. В телеграме есть две русскоязычных группы.

Casus ★★★★★
()
Последнее исправление: Casus (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.