- ฉันสงสัยว่าไฟล์ข้อความบางไฟล์เก็บวิธีการเข้ารหัสตามเนื้อหาข้อความไว้เพื่อถอดรหัสในภายหลังหรือไม่
- หรือเป็นหน้าที่ของผู้ดูข้อความในการเดาวิธีการเข้ารหัสสำหรับไฟล์ข้อความที่กำหนดและการคาดเดาอาจไม่ถูกต้องเสมอไป? ถ้าใช่ตัวแสดงข้อความจะเดาได้อย่างไร
คำตอบ:
ฉันสงสัยว่าไฟล์ข้อความบางไฟล์เก็บวิธีการเข้ารหัสตามเนื้อหาข้อความไว้เพื่อถอดรหัสในภายหลังหรือไม่
คำตอบของ Mark Szymanski นั้นถูกต้อง - ไม่มีข้อมูลการเข้ารหัสที่ชัดเจนในไฟล์ข้อความธรรมดา - นั่นคือคำจำกัดความของ "ไฟล์ข้อความธรรมดา", "ธรรมดา" หมายถึงข้อเท็จจริงที่ว่าไม่มีเมตาดาต้าในไฟล์
อย่างไรก็ตามบางแอพพลิเคชั่นจะวางเครื่องหมายคำสั่ง (BOM) ในไฟล์ข้อความที่เข้ารหัสเป็น UTF-16 หรือ UTF-32 / UCS-4 BOM ไม่ได้มีไว้เพื่อระบุการเข้ารหัส (มันบ่งบอกถึงลำดับไบต์ตามที่ชื่อระบุไว้) แต่แอปพลิเคชันจำนวนมากจะใช้การแสดงตนของ BOM เพื่อรับรู้ UTF-16 / UTF-32 ดังนั้นจึงทำหน้าที่เป็นตัวบ่งชี้การเข้ารหัส
หรือเป็นหน้าที่ของผู้ดูข้อความในการเดาวิธีการเข้ารหัสสำหรับไฟล์ข้อความที่กำหนดและการคาดเดาอาจไม่ถูกต้องเสมอไป? ถ้าใช่ตัวแสดงข้อความจะเดาได้อย่างไร
ใช่โปรแกรมอ่านข้อความสามารถเดาได้เท่านั้น โดยปกติจะใช้การวิเคราะห์พฤติกรรมบางอย่าง:
vim
ทำงานเช่นโดยค่าเริ่มต้น: มันจะพยายามใช้ UTF-8 ก่อนเมื่ออ่านไฟล์; หากล้มเหลวก็จะกลับไปที่ ISO-8859-1ในกรณีส่วนใหญ่โปรแกรมต้องได้รับการบอกกล่าวอย่างชัดเจนว่าการเข้ารหัสไฟล์ข้อความคืออะไรมิฉะนั้นจะไม่สามารถอ่านได้อย่างถูกต้อง
file -bi
ทำงานอย่างไรถ้าไม่ได้ใช้ BOM
file
มีการวิเคราะห์พฤติกรรมต่าง ๆ เพื่อกำหนดประเภทไฟล์และการเข้ารหัส ส่วนใหญ่จะมองหาสตริงที่แน่นอนหรือลำดับไบต์ในไฟล์ หากคุณต้องการข้อมูลที่เฉพาะเจาะจงมากขึ้นคุณอาจต้องอ่านแหล่งที่มา หรือเพียงแค่ถามคำถามแยกต่างหาก :-)
file
ไม่สามารถตรวจจับการเข้ารหัสข้อความส่วนใหญ่ได้อย่างน่าเชื่อถือ (เพราะมันยากมาก) หน้าคนมีข้อมูลบางอย่างเกี่ยวกับการตรวจจับชุดอักขระ - file
ส่วนใหญ่รู้จัก ASCII, UTF-8/16, EBCDIC และ ISO-8859-x เท่านั้น ตัวอย่างเช่นไฟล์ที่เข้ารหัสใน KOI8-R ถูกรายงานว่า "ISO-8859-1"
ไฟล์ข้อความล้วนไม่เก็บข้อมูลใด ๆ เกี่ยวกับการเข้ารหัส วิวเวอร์พิจารณาตามการเข้ารหัสอักขระที่คุณตั้งไว้ ไม่สามารถระบุได้ด้วยตัวเองเนื่องจากมันเหมือนกันกับคอมพิวเตอร์
less
และgrep
ใน Unix / Linux ทำสิ่งนี้)