ANSI ถึง UTF-8 ใน Notepad ++


25

ฉันมีข้อความที่เข้ารหัสใน ANSI:

ไฟล์ข้อความ ANSI

เมื่อฉันพยายามแปลงเป็น UTF-8 (โดยใช้เมนูการเข้ารหัสเมนู Notepad ++> UTF-8) ฉันได้รับตัวละครแปลก ๆ :

ไฟล์ข้อความ UTF-8

ฉันคิดว่า UTF-8 เป็น superset ของ ANSI และต่อมาฉันก็ไม่มีปัญหาเช่นนั้น อย่างไรก็ตามฉันสามารถหลีกเลี่ยงการปรากฎตัวละครแปลก ๆ เหล่านั้นได้หรือไม่?


ฉันไม่เห็นว่ามีอะไรแปลก ๆ ในสมัยภาพ
phuclv

ฉันหมายถึงตัวละครที่ไม่สามารถแสดงได้ มีวิธีใดบ้างที่จะหลีกเลี่ยงปัญหานี้?
3658425

คุณแก้ไขคำถามหรือไม่ ฉันคิดว่าฉันเห็นภาพที่ตรงกันข้าม
phuclv

1
ใช่ขอโทษฉันผลักแก้ไขล่าสุดของฉันหลังจากที่ใครบางคนเพิ่มภาพด้วยการลบการเพิ่ม: ถ้าคุณสามารถเพิ่มพวกเขากลับมาจะดี!
user3658425

คำตอบ:


38

UTF-8 ไม่ใช่ชุดอักขระเพียงการเข้ารหัสสำหรับ Unicode อักขระ 128 ตัวแรกนั้นเหมือนกับ ASCII แต่ต่างกันใน 128 ไบต์ที่สูง ไบต์ที่มีชุดบิตสูง (หรือ> = 0x80) เป็นอักขระส่วนขยายใน ASCII ในขณะที่ใน UTF-8 จะเป็นการระบุไบต์เริ่มต้นของลำดับหลายไบต์ นั่นเป็นกรณีของ 0x93 หรือ 0x94 ด้านบน อย่างไรก็ตามฉันไม่เห็นอะไรแปลก ๆ ในไฟล์ สิ่งเหล่านี้เป็นคำพูดอัจฉริยะหรือคำพูดที่มีรูปแบบที่แตกต่างกันสำหรับการเปิดและปิดคำพูดซึ่งคุณมักจะเห็นเมื่อใช้โปรแกรมแก้ไขข้อความที่หลากหลายเช่น MS Word

แก้ไข

คำถามได้ถูกแก้ไขแล้ว ฉันคิดว่าเป็นเพราะคุณเลือกเครื่องมือที่ไม่ถูกต้อง encodeรายการเมนูมีการเปลี่ยนแปลงการเข้ารหัสถ้าคุณมีการแสดงตัวอักษรที่ไม่ถูกต้อง มันแค่ปฏิบัติตามลำดับไบต์เดียวกันที่อ่านจากดิสก์เป็นการเข้ารหัสอื่น เนื่องจาก ASCII และ UTF-8 มีความแตกต่างกันคุณจะมีลำดับ UTF-8 ที่ไม่ถูกต้องและดูผลลัพธ์ด้านบน คุณต้องเลือกconvert to UTF-8เพื่อเปลี่ยนไบต์อินพุตทั้งหมด

การเข้ารหัส notepad

คุณสับสน ANSI และ ASCII ด้วย ANSI มักจะอ้างถึง Windows-1252 ซึ่งเป็นชุดอักขระที่ใช้ใน Windows ภาษาอังกฤษและภาษายุโรปตะวันตกบางภาษา มันเป็นชุดของ ISO 8859-1 แม้ว่า ISO 8859-1 อาจถูกอ้างถึงว่าเป็น ANSI ISO 8859-1 ยังเป็นรหัส 256 ตัวแรกของ Unicode ดังนั้นจึงเป็นชุดย่อยของ Unicode แต่ไม่เข้ากันได้กับการเข้ารหัส UTF-8 ASCII เป็นชุดอักขระ 7 บิตและเป็นชุดย่อยของ ANSI ซึ่งถูกเข้ารหัสด้วย 8 บิต แต่บางครั้งก็อ้างถึงเป็น ANSI แม้ว่าจะไม่ถูกต้องมาก

https://en.wikipedia.org/wiki/ANSI_character_set

โดยทั่วไปความสัมพันธ์ระหว่างชุดอักขระมีดังนี้

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode

ขอบคุณขออภัยที่ทำให้ชุดอักขระสับสนด้วยการเข้ารหัส มีวิธีใดที่จะหลีกเลี่ยงการใช้อักขระที่ไม่สามารถแสดงได้
user3658425

@ user3658425 โปรดดูการแก้ไขของฉัน
phuclv

1
ฉันยังแก้ไขข้อมูล ANSI / ASCII ข้างต้นแล้ว
phuclv

3
โปรดทราบว่าโดยทั่วไป "UTF-8 ที่ไม่มีเครื่องหมายคำสั่งซื้อ Byte" คือสิ่งที่คุณต้องการ ดังที่คนอื่น ๆ หลายคนพูดในอดีตว่า"UTF-8 เป็นเพียงการเข้ารหัสสตริงที่มีประโยชน์เท่านั้น "
Riking

4
@WillihamTotland utf8everywhere.org
phuclv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.