בפוסט הקודם כתבתי על השמישות של אתר הפרומו לאלבום החדש של להקת משינה שעלה לאוויר לאחרונה. הסיבה העיקרית להיכנס לאתר היא ככל הנראה להוריד את הדיסק למחשב (הסיבה השנייה היא להאזין לו דרך האתר), וככל הנראה משהו התפקשש לאדם שארז את הקובץ ולכן לא נוח להשתמש בו, ובמקרים מסויימים הוא כלל לא יפתח.
לא ידועה לי מה הסיבה האמיתית שגרמה לקובץ להיפגם, אבל אני מניח שמדובר בבעיה שנובעת מדרך דחיסת הקובץ. ככל הנראה התוכנה איתה נארז הקובץ לא ממירה את שמות הקבצים לקידוד utf-8, ואני מניח שמערכות קבצים מסוג fat32 לא בהכרח משתמשות בקידוד יוניקוד בווינדוס.
נסיונות לפרוס את הקובץ אמנם מצליחים, אבל התוצאה הסופית היא קבצים שלא ניתן לקרוא את שמם.
$ unzip -v mashina-diamonds_in_the_sky.zip Archive: mashina-diamonds_in_the_sky.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 11866823 Defl:N 11016992 7% 2010-02-25 15:28 072fc022 ????? - ??????? ??????/01 ?????? ????.mp3 10670415 Defl:N 9919488 7% 2010-02-25 15:29 837afcc3 ????? - ??????? ??????/02 ??????? ??????.mp3 9734186 Defl:N 9011029 7% 2010-02-25 15:30 104dd258 ????? - ??????? ??????/03 ????? ?????.mp3 9359068 Defl:N 8682609 7% 2010-02-25 15:31 e755485c ????? - ??????? ??????/04 ??? ??????.mp3 9592080 Defl:N 8914220 7% 2010-02-25 15:32 2155cca0 ????? - ??????? ??????/05 ?????? ????????.mp3 8359100 Defl:N 7736696 7% 2010-02-25 15:33 e0e61aa5 ????? - ??????? ??????/06 ????? ????.mp3 10327688 Defl:N 9572290 7% 2010-02-25 15:33 ce341b3b ????? - ??????? ??????/07 ????? ????.mp3 11189729 Defl:N 10348867 8% 2010-02-25 15:34 872437c9 ????? - ??????? ??????/08 ?????.mp3 11271231 Defl:N 10476885 7% 2010-02-25 15:35 14706edf ????? - ??????? ??????/09 ?????.mp3 13971247 Defl:N 12928714 8% 2010-02-25 15:35 771d8631 ????? - ??????? ??????/10 ???? ???.mp3 2890883 Defl:N 2763472 4% 2010-04-06 11:35 02e5a6f9 diamonds_in_the_sky_Cover.jpg -------- ------- --- ------- 109232450 101371262 7% 11 files
לחכמולוגים שיגידו לנסות לפרוס את הקובץ עם תוכנה אחרת, אדגיש שניסיתי להשתמש גם בתוכנות אחרות, אך ללא הצלחה – שום תוכנה שבדקתי לא מאפשרת להגדיר את קידוד המקור של הקבצים כדי שהם יפרסו בהתאם לדרישת מערכת ההפעלה.
דרך 7zip התקבל מידע נוסף, שיכול לעזור לנחש שמדובר בבעית קידוד ולא סתם דחיסה דפוקה.
$ 7z l mashina-diamonds_in_the_sky.zip 7-Zip 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30 p7zip Version 9.04 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs) Listing archive: mashina-diamonds_in_the_sky.zip ---- Path = mashina-diamonds_in_the_sky.zip Type = Zip Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2010-02-25 15:28:10 ....A 11866823 11016992 - /01 .mp3 2010-02-25 15:29:46 ....A 10670415 9919488 - /02 .mp3 2010-02-25 15:30:50 ....A 9734186 9011029 - /03 .mp3 2010-02-25 15:31:48 ....A 9359068 8682609 - /04 .mp3 2010-02-25 15:32:44 ....A 9592080 8914220 - /05 .mp3 2010-02-25 15:33:20 ....A 8359100 7736696 - /06 .mp3 2010-02-25 15:33:56 ....A 10327688 9572290 - /07 .mp3 2010-02-25 15:34:28 ....A 11189729 10348867 - /08 .mp3 2010-02-25 15:35:02 ....A 11271231 10476885 - /09 .mp3 2010-02-25 15:35:40 ....A 13971247 12928714 - /10 .mp3 2010-04-06 11:35:56 ....A 2890883 2763472 diamonds_in_the_sky_Cover.jpg ------------------- ----- ------------ ------------ ------------------------ 109232450 101371262 11 files, 0 folders
הפתרון מבחינתי היה להשתמש בתוכנה convmv. התוכנה הנ"ל מבצעת את מה שעושה iconv לקבצי טקסט ברמת קבצים ותיקיות, ונמצאת במאגרים בחבילה convmv. השימוש בפקודה די דומה ל־iconv עם מספר שינויים קלים, וכדאי לעיין במדריך למשתמש כדי לקבל את המידע הדרוש.
במקרה שלנו את הקבצים כבר פרסתי בדיסק, ויכולתי להשתמש בהם למרות שהטרמינל מציג אותם כסימני שאלה. אפשר כמובן להתחכם ולעשות mount למחיצה עם קידוד זהה לקידוד בו השתמשו בדחיסת הקובץ כדי שהוא יפתח כראוי ואז ניתן יהיה להעתיק אותו למחיצה הרגילה, אבל למה לעשות את זה אם יש פקודה חזקה כמו convmv שתעשה זאת עבורנו?
לאחר שניסיתי לקרוא את הקבצים בקידוד iso-8859-8 (המוכר גם בתור windows-1255) ללא הצלחה, ניסיתי את הקידוד cp862 שהיה קידוד הדף של העברית לפני שמערכות הפעלה גרפיות השלטו על מחוזותינו. וראו איזה פלא – אפשר לראות את שמות הקבצים!
$ convmv -f cp862 -t utf8 -r * Your Perl version has fleas #37757 #49830 Starting a dry run without changes... mv "��� - ����� ����/02 ����� ����.mp3" "��� - ����� ����/02 יהלומים בשמיים.mp3" mv "��� - ����� ����/06 ��� ����.mp3" "��� - ����� ����/06 מדורה קטנה.mp3" mv "��� - ����� ����/04 ��������.mp3" "��� - ����� ����/04 בין הצללים.mp3" mv "��� - ����� ����/03 ����� ���.mp3" "��� - ����� ����/03 האושר הסמוי.mp3" mv "��� - ����� ����/01 ������ ����.mp3" "��� - ����� ����/01 בליינד דייט.mp3" mv "��� - ����� ����/07 ����� ����.mp3" "��� - ����� ����/07 ביקור בעיר.mp3" mv "��� - ����� ����/05 ���� ��������.mp3" "��� - ����� ����/05 לנדסמן ופולנסקי.mp3" mv "��� - ����� ����/08 �����.mp3" "��� - ����� ����/08 געגוע.mp3" mv "��� - ����� ����/09 �����.mp3" "��� - ����� ����/09 הייתי.mp3" mv "��� - ����� ����/10 ���� ���.mp3" "��� - ����� ����/10 ילדה שלי.mp3" mv "./��� - ����� ����" "./משינה - יהלומים בשמיים" No changes to your files done. Use --notest to finally rename the files.
- הפרמטר -f מגדיר את קידוד המקור של הקובץ
- הפרמט -t מגדיר את קידוד היעד של הקובץ
- הפרמטר -r מגדיר לתוכנה לרוץ באופן רקורסיבי על תיקיות
- * מציין לתוכנה להתייחס לכל הקבצים והתיקיות בתיקייה הנוכחית – קצת מסובך יהיה לתת לה את שם התיקייה כאשר אין באפשרותנו להקליד את התווים אליהם היא מצפה.
במידה ואנחנו מרוצים מהתוצאה ורוצים שהתוכנה תעשה משהו מעבר להצגה למסך של הפקודות אותן יש להריץ, נוסיף את הפרמט –notest כדי לבצע את הפעולות שהוצעו.
$ convmv -f cp862 -t utf8 -r * --notest
$ ls -al משינה\ -\ יהלומים\ בשמיים/ total 103872 drwxr-xr-x 2 tomer tomer 4096 2010-04-08 01:10 . drwxr-xr-x 3 tomer tomer 4096 2010-04-08 01:10 .. -rw-r--r-- 1 tomer tomer 11866823 2010-02-25 15:28 01 בליינד דייט.mp3 -rw-r--r-- 1 tomer tomer 10670415 2010-02-25 15:29 02 יהלומים בשמיים.mp3 -rw-r--r-- 1 tomer tomer 9734186 2010-02-25 15:30 03 האושר הסמוי.mp3 -rw-r--r-- 1 tomer tomer 9359068 2010-02-25 15:31 04 בין הצללים.mp3 -rw-r--r-- 1 tomer tomer 9592080 2010-02-25 15:32 05 לנדסמן ופולנסקי.mp3 -rw-r--r-- 1 tomer tomer 8359100 2010-02-25 15:33 06 מדורה קטנה.mp3 -rw-r--r-- 1 tomer tomer 10327688 2010-02-25 15:33 07 ביקור בעיר.mp3 -rw-r--r-- 1 tomer tomer 11189729 2010-02-25 15:34 08 געגוע.mp3 -rw-r--r-- 1 tomer tomer 11271231 2010-02-25 15:35 09 הייתי.mp3 -rw-r--r-- 1 tomer tomer 13971247 2010-02-25 15:35 10 ילדה שלי.mp3
מספר הערות לפני פיזור:
- פריסת הקובץ עם 7zip קצת בעייתי, מאחר והתוכנה מתרגמת את שמות הקבצים ל־unicode. מאחר והיא לא מצליחה לפרש כראוי את הקידוד של הקובץ, יהיה מסובך יותר לעבוד עם הקבצים אם כי אני מניח שניתן יהיה לעשות זאת עם מספר פעולות המרה נוספות.
- מאחר ובחרנו להריץ את הפעולה על כל הקבצים בתיקייה מטעמי נוחות, כדאי לוודא שאין בתיקייה קבצים מיותרים. תפרסו את הקובץ לתיקיית עבודה זמנית – לעולם אל תפעילו פקודות מפוקפקות בתיקיית הבית שלכם עם תוכנם של הקבצים חשוב לכם!