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

Исходное сообщение
"Конвертирование URL с русскими символами в unicode"

Отправлено myshansun , 19-Авг-14 10:18 
Доброго времени суток, коллеги!

Подскажите как можно привести URLы вида:
http://someurl1.com/первая-страница/
к:
http://someurl1.com/п©п╣я─п╡п╟я▐-я│я┌я─п╟п╫п╦я├п╟/

Пользуюсь online-конвертором, но это не удобно, т.к. урлов очень много, к тому же он конвертирует так же символы, а мне нужно, чтобы конвертировались только не ascii-символы.

Все это мне нужно для блокировки данных URL на оборудовании, которое поддерживает только латиницу.

Спасибо!


Содержание

Сообщения в этом обсуждении
"Конвертирование URL с русскими символами в unicode"
Отправлено myshansun , 19-Авг-14 10:21 
>[оверквотинг удален]
> Подскажите как можно привести URLы вида:
> http://someurl1.com/первая-страница/
> к:
> http://someurl1.com/п©п╣я─п╡п╟я▐-я│я┌я─п╟п╫п╦я├п╟/
> Пользуюсь online-конвертором, но это не удобно, т.к. урлов очень много, к тому
> же он конвертирует так же символы, а мне нужно, чтобы конвертировались
> только не ascii-символы.
> Все это мне нужно для блокировки данных URL на оборудовании, которое поддерживает
> только латиницу.
> Спасибо!

Прошу прощения, когда опубликовал вид ссылок изменился :)
должно быть: %D0%BF%D0%B5%D1%80%D0%B2%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 в конечном варианте.


"Конвертирование URL с русскими символами в unicode"
Отправлено Andrey Mitrofanov , 19-Авг-14 10:33 
>> Подскажите как можно привести URLы вида:
>> http://someurl1.com/первая-страница/
>  Прошу прощения, когда опубликовал вид ссылок изменился :)

http://www.opennet.me/openforum/vsluhforumID4/416.html На оба Ж-) поста.


"Конвертирование URL с русскими символами в unicode"
Отправлено myshansun , 19-Авг-14 10:50 
>>> Подскажите как можно привести URLы вида:
>>> http://someurl1.com/первая-страница/
>>  Прошу прощения, когда опубликовал вид ссылок изменился :)
> http://www.opennet.me/openforum/vsluhforumID4/416.html На оба Ж-) поста.

Андрей, спасибо! Но он конвертирует ВСЮ стоку к такому виду, а мне нужно только НЕ ascii-символы (т.е. английский алфавит и символы оставить как есть).


"Конвертирование URL с русскими символами в unicode"
Отправлено Andrey Mitrofanov , 19-Авг-14 14:13 
> нужно только НЕ ascii-символы (т.е. английский алфавит и символы оставить как есть).

|recode ..h
- решил бы, *почти*, но перл ниже, судя по всему, короче и быстрее.


"Конвертирование URL с русскими символами в unicode"
Отправлено XAnder , 19-Авг-14 13:35 
Если локаль UTF-8, и от перла не коробит, то как-то так:

$ echo "someurl1.com/первая-страница/" | perl -ne 's/([^\x00-\x7f])/sprintf "%%%2X", ord $1/ge; print'

PS. А ссылки движок форума действительно коверкает изрядно :-(


"Конвертирование URL с русскими символами в unicode"
Отправлено myshansun , 19-Авг-14 17:25 
> Если локаль UTF-8, и от перла не коробит, то как-то так:
>
$ echo "someurl1.com/первая-страница/" | perl -ne 's/([^\x00-\x7f])/sprintf 
> "%%%2X", ord $1/ge; print'

> PS. А ссылки движок форума действительно коверкает изрядно :-(

Спасибо! То, что нужно!:)


"Конвертирование URL с русскими символами в unicode"
Отправлено universite , 20-Авг-14 06:54 
> Если локаль UTF-8, и от перла не коробит, то как-то так:
>
$ echo "someurl1.com/первая-страница/" | perl -ne 's/([^\x00-\x7f])/sprintf 
> "%%%2X", ord $1/ge; print'

> PS. А ссылки движок форума действительно коверкает изрядно :-(

Perl - не Shell :)


"Конвертирование URL с русскими символами в unicode"
Отправлено XAnder , 20-Авг-14 08:47 
> Perl - не Shell :)

Отжежблин! Мне правда стыдно. Хны...

Ждём решения на чистом шелле :-) Интим^W sed, awk и прочая не предлагать!


"Конвертирование URL с русскими символами в unicode"
Отправлено Andrey Mitrofanov , 20-Авг-14 09:52 
>> Perl - не Shell :)
> Отжежблин! Мне правда стыдно. Хны...
> Ждём решения на чистом шелле :-) Интим^W sed, awk и прочая не
> предлагать!

На чистом посикс-шеле (какой версии посикса?? какой реализации? версии реализации?!), или на bash 4.1+, или configure.ac со сборкой портабельного .sh, или $??? ?  B*)


"Конвертирование URL с русскими символами в unicode"
Отправлено Andrey Mitrofanov , 20-Авг-14 10:28 
>>> Perl - не Shell :)
>> Ждём решения
> или на bash 4.1+,

Ну... Дождались!!

$ bash --version |awk '{print$4;exit}'
4.1.2(1)-release
$ xx() { local S="$1" D= LANG=C;while [ "$S" ]; do if [[ "$S" =~ ^[[:print:]]+ ]]; then D="$D${BASH_REMATCH[0]}"; S="${S:$((${#BASH_REMATCH[0]}))}"; else D="$D%$(printf "%02x" "'${S:0:1}")"; S="${S:1}"; fi; done; echo "$D"; }
$ xx https://ru.wikipedia.org/wiki/Оболочка_операционной_системы
https://ru.wikipedia.org/wiki/%d0%9e%d0%...
$ _