Вот скрипт на Python, который преобразует <U9999>
строки в их эквивалент ASCII (0-127), используя unidecode
module :
#!/usr/bin/env python
import fileinput, re, sys
from unidecode import unidecode # to install, run: $ pip install unidecode
for line in fileinput.input(inplace='--inplace' in sys.argv):
print re.sub(r'<U([0-9A-F]{4})>',
lambda m: unidecode(unichr(int(m.group(1), 16))),
line),
Он принимает ввод от stdin/ или файлы, указанные в командной строке.
$ u9999-to-ascii data.in
LC_TIME
abday "Dom";"Seg";/
"Ter";"Qua";/
"Qui";"Sex";/
"Sab"
Обратите внимание, что символа á
нет, поскольку ascii его не поддерживает, поэтому скрипт заменил его на аналог ascii a
.
Если вам не нужна ascii, тогда:
#!/usr/bin/env python
from __future__ import print_function
import fileinput, re, sys
for line in fileinput.input(mode='rb', inplace='--inplace' in sys.argv):
print(re.sub(br'<U([0-9A-F]{4})>', lambda m: br'\u'+m.group(1),
line).decode('raw-unicode-escape'), end='')
Этот скрипт работает как в Python2.6 +, так и в Python3.x.Пример:
$ u9999-to-unicode.py data.in
LC_TIME
abday "Dom";"Seg";/
"Ter";"Qua";/
"Qui";"Sex";/
"Sáb"
Примечание. á
.Этот скрипт может выдать ошибку, если ваша кодировка терминала не поддерживает все символы Юникода от data.in
.В этом случае вы можете использовать метод .encode()
.