การตั้งค่า UTF8 เป็นการเข้ารหัสอักขระเริ่มต้นใน Windows 7


63

มีวิธีการตั้งค่า Windows 7 ให้ใช้ UTF-8 ทั่วโลกเป็นมาตรฐานหรือไม่?
มันน่ารำคาญจริงๆที่จะตั้งโปรแกรมแก้ไขข้อความทุกอันให้ใช้


4
ดังนั้นคุณต้องการที่จะบอกสิ่งที่ระบบปฏิบัติการ .. แล้วอย่างน่าอัศจรรย์บรรณาธิการทั้งหมดเลือกที่ขึ้นมา? :) คุณใช้บรรณาธิการกี่คน? ทุก ๆ 3 นาทีอีกอัน? อย่างไรก็ตาม: superuser.com/questions/221593/windows-7-utf-8-and-unicodeจากสิ่งที่ฉันรู้: Windows ใช้ UTF16 ภายในทุกที่และฉันสงสัยว่าคุณสามารถเปลี่ยนได้
akira

1
บรรณาธิการที่ฉันใช้: notepad, notepad ++, qt, eclipse, ธันเดอร์เบิร์ด, open office และอื่น ๆ ... ฉันไม่ได้พูดถึงบรรณาธิการข้อความธรรมดา แต่ทุกอย่างที่ทำงานกับข้อความและผลลัพธ์ โปรแกรมแก้ไขข้อความอิสระแพลตฟอร์มส่วนใหญ่ใช้ utf-8 เป็นมาตรฐานใน Linux แต่ใช้ภาษาละติน -1 ใน Windows
Baarn

ไม่ใช่ใน Windows 7 แต่เป็นไปได้ใน Windows 10
phuclv

คำตอบ:


45

คำตอบสั้น ๆไม่มันเป็นไปไม่ได้

เพื่ออธิบายอย่างละเอียดฉันกลัวว่าคุณจะไม่พบตัวเลือกการเข้ารหัสทั่วโลกใน Windows 7 ที่ให้คุณทั้งคู่ 1) ตั้งค่าเริ่มต้นระดับโลกซึ่ง 2) แอปพลิเคชันทั้งหมดที่คุณระบุไว้จะเชื่อฟัง

นอกจากนี้ฉันอยากถามว่าปัญหาที่คุณพยายามแก้ไขคืออะไร

ขึ้นอยู่กับแอพพลิเคชั่นที่จะเลือกว่าจะใช้ Unicode ภายในเพื่อแสดงข้อมูลหรือไม่ ในขณะที่สนับสนุนการใช้ Unicodeคุณอาจไม่แน่ใจว่าแอปพลิเคชันทั้งหมดของคุณมีการสนับสนุนจากภายใน

สิ่งที่คุณสามารถทำได้คือเปลี่ยนการเข้ารหัสตัวอักษรเริ่มต้นสำหรับแต่ละแอพพลิเคชั่นที่แสดง:

  • สำหรับ Eclipse การเข้ารหัสเริ่มต้นสำหรับไฟล์ใหม่สามารถตั้งค่าได้จากWindows> การกำหนดค่าตามความชอบ> ทั่วไป> ประเภทเนื้อหา (ดูโพสต์บนฟอร์มชุมชน Eclipse )
  • สำหรับ Notepad ++ ให้ไปที่การตั้งค่า> ค่ากำหนด> เอกสารใหม่ / ค่าเริ่มต้น / ไดเรกทอรีและตั้งค่าการเข้ารหัสเป็นUTF-8
  • สำหรับธันเดอร์เบิร์ดฉันค่อนข้างแน่ใจว่ามันใช้ UTF-8 มาเป็นค่าเริ่มต้นแล้วหรือยัง (ดูหมายเหตุเหล่านี้เกี่ยวกับการเข้ารหัสอักขระ )
  • ในกรณีของ OpenOffice (และ LibreOffice) คุณไม่จำเป็นต้องกังวลเกี่ยวกับการเข้ารหัสเนื่องจากเอกสารที่บันทึกโดย OpenOffice ใช้ XML ซึ่งมีการระบุการเข้ารหัสภายในไว้ในไฟล์ XML (และUTF-8มีอยู่แล้ว ค่าเริ่มต้นที่นั่นเช่นกัน)
  • จากมุมมอง UTF-8 PowerShell นั้นยุ่งยาก UTF-16LEมันมีการเข้ารหัสเริ่มต้นของ
    • สำหรับการส่งออกไฟล์จาก PowerShell ไปยัง UTF-8 ดูคำตอบนี้
    • สำหรับการเปลี่ยนการเข้ารหัสเริ่มต้นให้ดูคำตอบนี้

4
ไม่ใช่คำตอบที่ฉันหวังว่าจะได้รับ แต่ฉันคิดว่าฉันต้องใช้ชีวิตด้วยความจริงขอบคุณ =)
Baarn

สำหรับ windows notepad?
Mimouni

23

มันเป็นไปไม่ได้ส่วนใหญ่เป็นเพราะ Windows ไม่อนุญาตให้ UTF-8 เป็นระบบเพจรหัส ANSI แม้ว่ามันจะมีเพจรหัส ANSI สำหรับ UTF-8, เพจรหัส 65001 ดูเหมือนจะมีสาเหตุหลายประการสำหรับสิ่งนี้:

  • เมื่อ Unicode เป็นรุ่นใหม่ Microsoft ตัดสินใจว่า UCS-2 จะเป็นวิธีที่ดีที่สุดในการรองรับ Unicode ในเวลานั้น Unicode คือ 16 บิต
  • Windows มีเพจรหัส ANSI หนึ่งภาษาสำหรับแต่ละภาษาที่รองรับซึ่งแตกต่างจาก Unix และ Linux ที่สามารถตั้งค่าภาษาและการเข้ารหัสได้อย่างอิสระ
  • รหัสหน้า 65001 ไม่ทำงานทุกที่ โดยเฉพาะมันเสียด้วยการสนับสนุน MultiByte ใน Windows ซึ่งคาดว่าอักขระหลายไบต์ต้องการหนึ่งหรือสองไบต์ในขณะที่ UTF-8 ต้องการระหว่างหนึ่งถึงสี่ไบต์ WriteFile()APIเช่นส่งกลับผลลัพธ์ไม่ถูกต้องภายใต้เพจรหัส 65001 write()ซึ่งฟองอากาศขึ้นรหัสผ่านห้องสมุดทั้งหมดอาศัยอยู่ในนั้นเช่น

ไมเคิลแคปแพล่นผู้ทำงานด้านความเป็นสากลที่ไมโครซอฟท์มีบล็อก"เรียงลำดับทุกอย่าง"พร้อมด้วยโพสต์หลายหัวข้อในหัวข้อที่เกี่ยวข้อง ฉันส่งอีเมลถึงเขาโดยตรงเกี่ยวกับข้อกังวลเหล่านี้ในวันนี้


โปรดทราบว่าย้อนกลับไปเมื่อ Windows (NT) รู้สึกว่าไม่มี UTF-8 ดังนั้น UCS-2 จึงเป็นทางเลือกที่มีเหตุผลจริงๆ (และเป็นไปไม่ได้ที่จะเปลี่ยนแปลงหลังจากนั้นยกเว้น UTF-16)
Joey

2
เหตุผลคือเนื่องจากโลแคล UTF-8 อาจทำให้บางฟังก์ชั่น (ตัวอย่างที่เป็นไปได้คือ _mbsrev) เนื่องจากพวกมันถูกเขียนเพื่อใช้การเข้ารหัสแบบมัลติไบต์ใช้ไม่เกิน 2 ไบต์ต่ออักขระดังนั้นจนถึงตอนนี้โค้ดเพจที่มีไบต์มากขึ้นเช่น GB 18030 (cp54936 ) และไม่สามารถตั้งค่า UTF-8 เป็นโลแคล . แต่อย่างน้อยตอนนี้ก็เป็นไปได้ที่จะตั้งค่าโลแคล UTF-8 บน Windows 10
phuclv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.