จะเปิดไฟล์ข้อความ MacOs อย่างถูกต้องบน Win ได้อย่างไร

วิธีแปลงไฟล์ข้อความ Mac เป็นไฟล์ข้อความ Win และในทางกลับกัน

ถึงตอนนี้ฉันไม่รู้ว่าไฟล์ข้อความ MacOS และ Win นั้นแตกต่างกัน ฉันไม่ได้พูดถึงอักขระขึ้นบรรทัดใหม่: CR สำหรับ MacOS, LF สำหรับ Unix และ CR/LF สำหรับ win

เห็นได้ชัดว่ามีความแตกต่างมากขึ้นเมื่อพูดถึงอักขระพิเศษ เช่น Umlauts เป็นต้น ฉันได้รับไฟล์ข้อความที่สร้างบน Mac ถ้าฉันเปิดไฟล์นี้ภายใต้ Win ด้วย Notepad++ มันจะบอกฉันว่า Macintosh ANSI

ö กลายเป็น š

ä กลายเป็น Š

ü กลายเป็น Ÿ ...

ด้วย Notepad++ ฉันลองใช้การเข้ารหัสทุกประเภท Windows 1252-1 หรือ ISO-8859, UTF-8, ... ตามที่ฉันได้เรียนรู้ ดูเหมือนว่าจะมีการเข้ารหัส MacOS Roman... ซึ่ง Notepad++ ดูเหมือนจะไม่เข้าใจ เมื่อในที่สุดฉันก็สามารถจัดการเปิดและแก้ไขไฟล์ข้อความ Mac ได้อย่างถูกต้อง ฉันคิดว่ามันอาจจะดีที่สุดถ้าฉันบันทึกเป็น UTF-8 เพื่อการแลกเปลี่ยนเพิ่มเติมระหว่างระบบปฏิบัติการอย่างกระโดดโดยไม่มีปัญหา

คำถามของฉัน: ฉันจะอ่านไฟล์ข้อความ Mac (เข้ารหัส) อย่างถูกต้องภายใต้ Win ได้อย่างไร

(หมายเหตุ: การส่งไฟล์ไปให้ใครสักคนที่ใช้ Mac และขอให้เขาบันทึกเป็น UTF-8 ฉันจะไม่ถือว่าเป็นวิธีแก้ปัญหาที่ใช้งานได้จริง)


person theozh    schedule 03.02.2018    source แหล่งที่มา
comment
ไฟล์เหล่านี้ถูกสร้างขึ้นอย่างไร? พวกเขาอายุเท่าไหร่? Mac OS Roman ล้าสมัยไปแล้วตั้งแต่กลางทศวรรษ 2000   -  person    schedule 04.02.2018
comment
OS X/macOS ไม่ได้ใช้ CR มาระยะหนึ่งแล้ว แต่ใช้ LF มามากกว่า 10 ปีแล้วซึ่งฉันจำได้   -  person user3439894    schedule 04.02.2018
comment
@duskwuff ไฟล์เหล่านี้สร้างขึ้นโดยซอฟต์แวร์ถอดเสียงซึ่ง (ตามที่คุณพูด) ไม่ทันสมัยเกี่ยวกับการเข้ารหัสเมื่อส่งออกเป็นข้อความ ผู้ใช้ Mac ใช้ BBEdit เพื่อตรวจจับว่าเป็น MacOS ที่เข้ารหัสแบบ Roman และสามารถบันทึกเป็น UTF8 ได้ อย่างไรก็ตาม สำหรับฉัน อาจเป็นไปได้ยากมากที่ซอฟต์แวร์ Windows ใด ๆ จะตรวจพบการเข้ารหัส Mac เก่าและล้าสมัยใช่ไหม   -  person theozh    schedule 04.02.2018
comment
MacOS Roman ตาม Wikipedia คือ Code Page 10,000 ได้รับการสนับสนุนบนเฟรมเวิร์ก .Net ในรูปแบบการเข้ารหัสข้อความ Macintosh ดังนั้นจึงควรเขียนโปรแกรม C# หรือ VB เพื่อแปลง คำถามนี้ค่อนข้างขาดมุมทางโปรแกรมที่จำเป็นสำหรับ StackOverflow   -  person Nyerguds    schedule 06.02.2018
comment
โปรดทราบว่าการเข้ารหัสข้อความที่ไม่มีข้อกำหนดระดับบิตหรือไบต์ที่ระบุเฉพาะนั้นไม่สามารถตรวจพบได้จริงๆ ยกเว้นตามหลักการศึกษาสำนึก หากในการเข้ารหัส ค่าไบต์ใดๆ ตั้งแต่ 0 ถึง 255 จะแมปกับอักขระ (เช่นในกรณีของการเข้ารหัส 8 บิตล้วนๆ) ไม่มีข้อมูลใดที่ผิดสำหรับการเข้ารหัสนั้นจากมุมมองของคอมพิวเตอร์ และฉันไม่รู้จักโปรแกรมแก้ไขข้อความ ใดๆ ที่มีพจนานุกรมหลายสิบภาษาเพียงเพื่อตรวจสอบว่า คำ ที่ถูกต้องอาจมีอยู่ในนั้น   -  person Nyerguds    schedule 06.02.2018


คำตอบ (1)


@Nyerguds ฉันหวังว่าจะมีช่องทำเครื่องหมายหรือรายการรหัสง่าย ๆ ในบางโปรแกรม แต่ฉันไม่พบเลยจนถึงตอนนี้... อย่างไรก็ตาม ดูเหมือนว่าจะมีวิธีแก้ปัญหาแบบเป็นโปรแกรม...

# MacOSRoman2UTF8.py
import codecs, sys

# enter filename without .txt
fname = sys.argv[1]

with codecs.open(fname+'.txt', 'r', encoding='macroman') as file_in:
    file_content = file_in.read()

with codecs.open(fname+'_utf8.txt', 'w', encoding='utf-8') as file_out:
    file_out.write(file_content)
person theozh    schedule 07.02.2018