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

StackOverflow https://stackoverflow.com/questions/1992581

  •  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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top