Проблеми з переглядом файлів з неанглійськими іменами на жорсткому диску


1

У мене проблема, що я навіть не знаю, з чого почати шукати допомогу (Google не допомагає)

У мене зовнішній жорсткий диск відформатований як Mac OS Extended (Journaled). Я давно використовував його з моїм Macbook OS X. На цьому жорсткому диску є багато файлів із титулами з корейськими символами.

Нещодавно я придбав новий комп’ютер і встановив на ньому Xubuntu 11.04 разом із підтримкою корейської мови. Використовуючи графічний інтерфейс, я можу встановити зовнішній жорсткий диск і бачити лише ті файли, які не мають титул корейською мовою. Ті, що мають назву по-корейськи, навіть не з’являються. Тепер, якщо я заходжу на жорсткий диск через командний рядок і lsдиск, я отримую перелік корейських файлів з їх корейськими іменами, але лише після повідомлення про помилку для кожного з тих файлів, що має вигляд "ls: не може доступ: такого файлу чи каталогу немає ".

Тепер я повернувся на свій Mac, якщо я перейменую корейський файл на англійське ім'я, файл не може бути помічений моєю машиною Linux. Крім того, якщо я потім перейменую файл на корейське ім'я на моїй машині LINUX (пам’ятайте, моя машина Linux також має корейську підтримку), тоді машина Linux не має проблем із розпізнаванням чи читанням її, але тепер MAC не зможе розпізнати файл. Тобто, якщо я зараз заходжу зі своїм Mac і намагаюся відкрити файл через gui, файл (справді насправді каталог) порожній. Якщо я спробую вписати файл у командний рядок через командний рядок, він каже, що це дає мені помилку "немає такого файлу чи каталогу". Але робити lsанкету не дає помилок.

Коротше кажучи, схоже, що якщо я спробую назвати файл із іноземною мовою на своєму mac, мій Linux не розпізнає його, і якщо я спробую це зробити з моїм Linux, мій mac не розпізнає його. Єдиний спосіб, коли обидва комп'ютери зможуть використовувати зовнішній жорсткий диск, здається, якщо всі файли названі англійською мовою. Я хочу уникати перейменування сотень корейських файлів на англійські імена. Хтось знає, що тут може бути, або вказує мені на напрямок, який може допомогти мені вирішити цю проблему?

Дякую! Брайан

Відповіді:


1

Кодування імен файлів?

Чи Perl бачить корейські назви файлів?

perl -e 'opendir(D, ".");while($f=readdir(D)){print "--$f--\n";}'

Якщо в ньому відображаються імена файлів (або якась нерозпізнана їхня версія), можливо, ви зможете розібратися, якщо це проблема кодування. Корейські кодування включають KS X 1001, EUC-KR та ISO-2022-KR. Однак я вважаю, що і OSX, і Linux зазвичай використовують UTF-8.

Дивіться цю відповідь, яка говорить

Файлова система HFS + OS X вимагає, щоб усі імена файлів зберігалися у форматі UTF-8 їх повністю розкладеної форми.

Існують інструменти для перетворення кодування імен файлів, але вам потрібно переконати обидві операційні системи використовувати загальне кодування.

Дивіться це запитання, що описує кодування імені файлів Linux.

Я запустив convmv -f UTF-8 -t UTF-8каталог, і виявив, що ці 500 імен файлів не кодуються в UTF-8 ( convmvздатний виявляти та ігнорувати імена файлів уже в UTF-8)

Чи є простий спосіб я дізнатися, яку кодову мову вони зараз використовують?


perl бачить корейські імена файлів, але я думаю, це не проблема кодування (обидва використовували UTF-8). Це, на мою думку, має відношення до несумісності між HFS + жорсткими дисками та корейськими іменами між mac та linux. Єдиний інший посилання, який я міг знайти на це, є тут: ubuntuforums.org/showthread.php?t=1422374 І рішення не було. Я сподіваюся, що хтось може придумати його незабаром ...
bhh1988

@ bhh1988: Цей посилання дає зрозуміти, що відбувається. І Linux, і OSX можуть порушити закон Postel
RedGrittyBrick

0

Незважаючи на старе питання, корисно знати, що навіть за допомогою Unicode ви можете мати проблеми при передачі даних між регіонами.

Це проблема кодування через те, що Unicode має два різні способи формування символу (те ж саме відбувається з європейськими символами з umlauts тощо). Здається, OSX поєднує 3 гліфи для формування символу, а Linux / Ubuntu може використовувати обидва. в Linux спробуйте
$ echo -e "\ u1112 \ u1161 \ u11AB \ uD55C"

$ 한 한

вони візуально виглядають однаковими, але представляють на комп’ютері різні символи, як це підтверджено шестигранним дампам

$ echo -e "\ u1112 \ u1161 \ u11AB \ uD55C" | xxd

$ 0000000: e184 92e1 85a1 e186 ab20 2020 20ed 959c

$ 0000010: 0a

OSX, ймовірно, використовує 9 байт / 3 гліпсів на символ, а ваша установка / клавіатура Linux використовує 3byes / 1 гліф {\ xed \ x95 \ x9c)

Корейська настройка для клавіатури, ймовірно, налаштована так, щоб вона містила один гліф / символ, і ви думаєте лише, що ви вводите той самий символ, але він НЕ такий, як клавіатура OSX.

Можливо, доведеться перезавантажувати клавіатуру, щоб переконатися, що вона видає такий же набір символів, що і OSX.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.