ฉันพยายามระบุตัวละครแปลก ๆ ที่ฉันพบในไฟล์ที่ฉันทำงานด้วย:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
ไฟล์กำลังใช้การเข้ารหัส ISO-8859 และไม่สามารถแปลงเป็น UTF-8 ได้:
$ iconv -f ISO-8859 -t UTF-8 file
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.
$ iconv -t UTF-8 file
iconv: illegal input sequence at position 0
$ file file
file: ISO-8859 text
คำถามหลักของฉันคือฉันจะตีความผลลัพธ์ของod
ที่นี่ได้อย่างไร ฉันพยายามใช้หน้านี้ซึ่งช่วยให้ฉันแปลระหว่างการแสดงตัวอักษรที่แตกต่างกัน แต่มันบอกฉันว่า005353
"จุด Hex code" นั้น卓
ดูไม่ถูกต้องและ0aeb
เป็น "Hex code point" ૫
ซึ่งดูเหมือนว่าผิด .
ดังนั้นวิธีการที่ฉันสามารถใช้ใด ๆ ของสามตัวเลือก ( 355
, 005353
หรือ0aeb
) เพื่อหาสิ่งที่ตัวละครที่พวกเขาควรจะเป็นตัวแทน?
และใช่ฉันลองใช้เครื่องมือ Unicode แต่ดูเหมือนจะไม่เป็นอักขระ UTF ที่ถูกต้องเช่นกัน:
$ uniprops $(cat file)
U+FFFD ‹�› \N{REPLACEMENT CHARACTER}
\pS \p{So}
All Any Assigned Common Zyyy So S Gr_Base Grapheme_Base Graph X_POSIX_Graph
GrBase Other_Symbol Print X_POSIX_Print Symbol Specials Unicode
ถ้าฉันเข้าใจคำอธิบายของอักขระ Unicode U + FFFD มันไม่ใช่ตัวจริง แต่เป็นตัวยึดสำหรับอักขระที่เสียหาย ซึ่งเหมาะสมแล้วเนื่องจากไฟล์ไม่ได้เข้ารหัส UTF-8
ë
เป็นสิ่งที่ฉันเห็นเมื่อมีการใช้ข้อมูลในโปรแกรมอื่น! แต่ฉันจะรู้ได้อย่างไร มันไม่ได้อยู่ในข้อมูลที่ฉันให้หรือเปล่า คุณค้นพบมันได้อย่างไร โอ้ฉันได้พยายามiconv
ด้วย-f ISO-8859
แต่ก็บ่นเรื่องconversion from
ISO-8859' ไม่ได้ supported`
eb
และไม่สนใจ0x
ตัวบ่งชี้ฐานสิบหกหรืออะไรก็ตามที่เป็น ความไม่รู้ของฉันเกี่ยวกับเรื่องแบบนี้ลึก คุณสามารถโพสต์คำตอบที่อธิบายว่า @StephenKitt ได้หรือไม่
iconv
ก็จะประสบความสำเร็จ; และ / หรือคุณสามารถค้นหาได้เช่นใน Wikipedia สำหรับการเข้ารหัสที่เฉพาะเจาะจงนี้fileformat.info/info/unicode/char/00eb/index.htmก็ใช้งานได้ (Unicode เทียบเท่ากับ ISO-8859-1 ในช่วง 128-255 ถึงแม้ว่าแน่นอนว่าการเข้ารหัส UTF ไม่สามารถทำงานร่วมกับมันได้ )
iconv
บ่นเพราะคุณไม่ได้ระบุชุดอักขระต้นฉบับดังนั้นจึงใช้ค่าเริ่มต้นของคุณซึ่งอาจเป็น UTF-8)