סביר להניח שהקידוד הוא UTF-8. קצת פחות סביר אבל עדיין קיים: UTF-16.
אפשר לבדוק קידוד באמצעות iconv. לדוגמה, ננסה לקודד מ־UTF-8 לקידוד הנוכחי (הוא במקרה גם UTF-8, אבל מה זה משנה. התוכנית בודקת בהזדמנות שהקידוד תקין. כמוכן הקובץ הזה הוא במקרה גם קובץ ASCII תקין)
קוד: |
$ iconv -f UTF-8 /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
[snip]
|
כעת ננסה להמיר מקידוד UTF-16:
קוד: |
$ $ iconv -f UTF-16 /etc/fstab
‣支捴是瑳扡›瑳瑡捩映汩祳瑳浥椠普牯慭楴湯ਮਣ‣獕戧歬摩‧潴瀠楲瑮琠敨甠楮敶獲污祬甠楮畱摩湥楴楦牥映牯愠⌊搠癥捩㭥琠楨慭⁹敢甠敳楷桴唠䥕㵄愠潭敲爠扯獵⁴慷⁹潴渠浡敤楶散ੳ‣桴瑡眠牯獫攠敶晩搠獩獫愠敲愠摤摥愠摮爠浥癯摥敓獦慴⡢⤵ਮਣ‣昼汩祳瑳浥‾洼畯瑮瀠楯瑮‾†琼灹㹥†漼瑰潩獮‾†††搼浵㹰†瀼獡㹳⼊敤⽶慭灰牥洯污捡祬獰ⵥ瘭ⵧ潲瑯⼠†††††††砠獦††搠晥畡瑬†††〠†††〠⌊⼠潢瑯眠獡漠搯癥猯慤‱畤楲杮椠獮慴汬瑡潩੮唣䥕㵄㠱戴㐹㘷㔭㜱ⵥ㔴づ戭㜴ⴳㅦ㈶〲〰㈷搸⼠iconv: incomplete character or shift sequence at end of buffer
|
ההמרה נכשלה. אוסף הביטים הזה איכשהו אפילו לא קודד קובץ UTF-16 תקין וגם מה שראשיתו קודדה היה זבל.
במקרה שלך מדובר על קובץ JSON. אם יש לך בעיית גופנים בלבד, כל תווי הפיסוק (פסיקים, סוגרים, נקותתיים) אמורים להראות בצורה ברורה. אם הם לא ברורים, יש בעיה של קידוד ולא של גופנים.
ואז אני חוזר לבעיה המקורית ומנסה להבין מהי סביבת העבודה. יש שרת אובונטו. מהו הלקוח? אובונטו גם הוא? או שאתה מציג את הקבצים על גבי השרת? הגופנים צריכים להיות מותקנים אצל הלקוח.