LINUX.ORG.RU
ФорумTalks

Преобразование символа из десятичного кода в UTF-8

 , ,


2

2

Понадобилось смотреть какой символ соответствует коду. Написал такое:

~$ alias utf="dc -e '2 6^sb[PAPq]sq?dlb2*>q[dlb%lb2*+rlb/d2 Az-^<t]dstxlb4*2 8z3--^-+[Pz0<p]dspxAP'<<<"
~$ utf 1067
Ы
~$ utf 33
!
~$ utf 126
~
~$ utf 128050
🐲
~$ utf 51022
읎

Если вдруг нужен 16-ричный код, то можно так:

~$ alias utfhex="dc -e '16i2 6^sb[PAPq]sq?dlb2*>q[dlb%lb2*+rlb/d2 Az-^<t]dstxlb4*2 8z3--^-+[Pz0<p]dspxAP'<<<"
~$ utfhex 21
!
~$ utfhex AB
«
~$ utfhex 6587
文
~$ utfhex 42B
Ы

Но проще так:

~$ echo -e '\u042B'
Ы

★★★★★

Последнее исправление: Xenius (всего исправлений: 2)

Ответ на: комментарий от a1batross

Где гарантии, что оно не делает rm -rf?

Если бы там был rm -rf стал бы я это у себя запускать?

И что тебе мешает прочитать код и понять как он работает? dc очень простой язык и полное описание занимает пару страниц, и никто не запрещает прочитать man.

Xenius ★★★★★
() автор топика
Последнее исправление: Xenius (всего исправлений: 1)
alias utf="dc -e '2 6^sb[PAPq]sq?dlb2*>q[dlb%lb2*+rlb/d2 Az-^<t]dstxlb4*2 8z3--^-+[Pz0<p]dspxAP'<<<"

/me почувствовал себя ламером со своим

$ perl -e 'print "\x{6587}"'
文

Deleted
()
Ответ на: комментарий от af5

u042B (цифры на нумпаде)

Можно и не на нумпаде. Хм, да, работает. Но тут опять же код 16-ричный

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

Можно и не на нумпаде

если не на нумпаде то в некоторых терминалах лезут скобки и прочее вместо цифр.

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

если не на нумпаде то в некоторых терминалах лезут скобки и прочее вместо цифр.

В терминале это вообще не работает (проверял в xterm). И между прочим на нумпаде нету u и a-f

Xenius ★★★★★
() автор топика
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

У меня вроде срабатывало кое-где при невыясненных обстоятельствах.

И между прочим на нумпаде нету u и a-f

засада...

af5 ★★★★★
()
Последнее исправление: af5 (всего исправлений: 1)
Ответ на: комментарий от Xenius

А в чем непосредственно достижение? Вон есть пыхтон3, а в нем есть chr().

Если задача сделать страшненько с первого взгляда, то ты победил.

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

В терминале это вообще не работает (проверял в xterm)

с нумпадными цифрами работает нормально в стандартном убунтовом терминале

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

ctrl-shift удерживать
u042B (цифры на нумпаде)
отпустить ctrl-shift
Ы
цифры - на нумпаде, буквы - ну уж где найдешь, лишь бы раскладка англ.

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

А что за ОС? У меня стандартная убунта десктоп 16.04

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

Или может у тебя переключение раскладки на ctrl-shift (у меня alt-shift)

af5 ★★★★★
()
Последнее исправление: af5 (всего исправлений: 1)
Ответ на: комментарий от Xenius

$@

Такое ощущение что ты не на нумпаде набираешь а на тех которые сверху, откуда на нумпаде $@ вместо 42

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

perl -e 'print «\x{'`printf '%x' 51022`'}»'

Как-то сложно и запутанно и нафига там вообще перл не ясно.

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

Как-то сложно и запутанно

«dc -e '2 6^sb[PAPq]sq?dlb2*>q[dlb%lb2*+rlb/d2 Az-^<t]dstxlb4*2 8z3--^-+[Pz0<p]dspxAP'<<<»

/0 :)

нафига там вообще перл не ясно.

Первое, что в голову пришло.

Deleted
()
Ответ на: комментарий от Grantrol

А в KOI8 так же можно?

244 217 32 201 205 197 197 219 216 32 215 215 201 196 213 32 222 212 207 45 212 207 32 215 210 207 196 197 32 220 212 207 202 32 203 207 205 193 206 196 217 63

fkoi() { for x in `printf '%x ' $*`; do echo -en "\x$x"; done | iconv -f koi8; echo; }
Xenius ★★★★★
() автор топика
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от utf8nowhere

Зачем тогда dc?

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

Xenius ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.