การเข้ารหัส Unicode ใดที่ใช้ไม่ได้ขึ้นอยู่กับระบบปฏิบัติการ
แม้กระทั่ง notepad.exe ของ Windows ก็มีตัวเลือกในรายการ - (ฉันจะใส่เครื่องหมายวงเล็บในความหมายของ Notepad) ANSI (ไม่ใช่ Unicode), Unicode (notepad หมายถึง Unicode LE), Unicode Big Endian (BE), UTF-8
ANSI ไม่ใช่ยูนิโค้ดมันเกี่ยวข้องกับจำนวนอักขระที่ จำกัด มาก
แต่ดูว่า notepad สามารถทำ LE หรือ BE หรือ UTF-8 ได้
และแผ่นจดบันทึกด้านข้าง UTF-8 สามารถมีหรือไม่มี BOM ก็ได้
และฉันใช้ Windows กับ Cygwin แม้ว่าพอร์ต Windows อาจทำได้ดี \ r \ n แม้เมื่อคุณระบุ \ n เคยเห็นว่าทำเช่นนั้น
ไม่มีกฎใดข้อหนึ่งว่า Unicode เข้ารหัสระบบปฏิบัติการใดที่ใช้ มันจะไม่เป็นระบบปฏิบัติการที่ยืดหยุ่นมากหากมี
เมื่อต้องการดูความแตกต่างรู้ว่าซอฟต์แวร์การเข้ารหัสของซอฟต์แวร์ที่ใช้หรือข้อเสนออะไร
รับ Cygwin และ xxd และ / หรือโปรแกรมแก้ไขฐานสิบหกและดูสิ่งที่อยู่ภายในไฟล์จริงๆ ใช้คำสั่ง 'ไฟล์' เพื่อช่วยระบุไฟล์ จากนั้นคุณจะเห็นว่า UTF 16bit LE คืออะไร UTF 16 บิต BE คืออะไร UTF-8 คืออะไร (และ UTF-8 สามารถมีหรือไม่มี BOM)
บางครั้งคุณสามารถบอก notepad ให้บันทึกเป็น unicode (โดย notepad แปลว่า unicode 16 bit น้อย endian) และมันจะไม่ แต่เลือกฟอนต์ unicode เช่น arial unicode และคัดลอกตัวอักษรยูนิโค้ดจาก charmap และมันจะเป็นวิธีที่ดีในการดูว่า notepad หรือซอฟต์แวร์ใด ๆ กำลังทำอยู่โดยดูจากเลขฐานสิบหกของไฟล์
C:\asdf>notepad.exe a.a
C:\asdf>file a.a
a.a; Little-endian UTF-16 Unicode text, with no line terminators
C:\asdf>type a.a
aaa慡ൡ <-- though displayed aaa followed by some boxes in my cmd window
C:\asdf>
C:\asdf>xxd a.a
0000000: fffe 6100 6100 6100 6161 610d ..a.a.a.aaa.
C:\asdf>
^^ The portion of the byte that stores the 61 is the lower value portion which with LE is stored first.
คำสั่ง dd (คำสั่ง * nix ที่ฉันเรียกใช้จาก cygwin ภายใน windows) สามารถสลับได้
C:\asdf>xxd -p a.a
fffe6100610061006161610d
C:\asdf>file a.a
a.a; Little-endian UTF-16 Unicode text, with no line terminators
C:\asdf>dd if=a.a conv=swab of=a.a2
0+1 records in
0+1 records out
12 bytes (12 B) copied, 0 seconds, Infinity B/s
C:\asdf>type a.a2
a a a aaa
C:\asdf>xxd -p a.a2
feff00610061006161610d61
C:\asdf>file a.a2
a.a2; Big-endian UTF-16 Unicode text, with no line terminators
C:\asdf>
และ Notepad เองสามารถบันทึกเป็น UTF-16 Big Endian หรือ UTF-16 Little Endian หรือ UTF-8
หากคุณเป็นคนที่มีความรู้ด้านเทคนิคหรือแม้กระทั่งผู้ใช้ notepad คุณจะไม่ถูกผูกมัดกับการเข้ารหัสเพราะระบบปฏิบัติการของคุณ!
ฉันคิดว่า UTF-8 เหมาะสมกว่า UTF-16, UTF-16 จะใช้ 16 บิตแม้สำหรับตัวอักษรที่ควรใช้เพียง 8 บิต อย่างไรก็ตามโปรดจำไว้ว่า charmap แสดงรหัส UTF-16
ประเสริฐ (โปรแกรมแก้ไขข้อความ windows) จะบันทึกยูนิโคดเป็น UTF-8 ตามค่าเริ่มต้น
ฉันใช้ Windows และ unicode บางครั้งและฉันใช้ UTF-8 เป็นส่วนใหญ่
และเนื่องจาก Windows มีความยืดหยุ่นทางเทคนิคอย่างน้อย linux จึงมีความยืดหยุ่นทางเทคนิคอย่างน้อย!