Преобразование двухбайтовых чисел и пробелов в именах файлов в ASCII.
-
22-09-2019 - |
Вопрос
Учитывая каталог имен файлов, состоящий из двухбайтовых/полноширинных чисел и пробелов (а также некоторых чисел половинной ширины и символов подчеркивания), как я могу преобразовать все числа и пробелы в однобайтовые символы?
Например, это имя файла состоит из двухбайтового числа, за которым следует двухбайтовый пробел и несколько однобайтовых символов:
2 2_3.ext
и я хотел бы изменить его на однобайтовый, например:
2 2_3.расш.
я пробовал конвмв для преобразования из utf8 в ascii, но для всех файлов появляется следующее сообщение:
«ascii не охватывает все необходимые символы для: имя файла"
Решение 3
Спасибо за ваши быстрые ответы, bmargulies и bobince.Я нашел модуль Perl, Юникод::Японский, это помогло выполнить работу.Вот скрипт bash, который я сделал (с помощью этот пример), чтобы преобразовать имена файлов в текущем каталоге из символов полной ширины в символы половинной ширины:
#!/bin/bash
for file in *;do
newfile=$(echo $file | perl -MUnicode::Japanese -e'print Unicode::Japanese->new(<>)->z2h->get;')
test "$file" != "$newfile" && mv "$file" "$newfile"
done
Другие советы
Вам нужна либо (1) нормализация из Java 1.6 (java.text.Normalizer
), или (2) отделение интенсивной терапии, или (3 (маловероятно)) товар, продаваемый там, где я работаю.
Какие инструменты у вас есть?Функции нормализации Unicode есть в нескольких языках сценариев, например в Python:
for child in os.listdir(u'.'):
normal= unicodedata.normalize('NFKC', child)
if normal!=child:
os.rename(child, normal)