ตัวละครแปลกๆ ขณะอ่านเนื้อหาไฟล์

ฉันไม่แน่ใจว่ามีอะไรผิดปกติ:

for line in open(textfile, 'r'):
    print(line)

เอาท์พุท:

abcd

ไฟล์ถูกสร้างขึ้นโดยใช้ textpad++ โดยใช้การเข้ารหัส Unix EOL และ UTF8

ตอนนี้มันทำงานได้อย่างถูกต้องโดยใช้การเข้ารหัสด้วย UTF-8 โดยไม่มีตัวเลือก BOM บน notepad++ แต่ทำไม? ฉันหมายถึงฉันจะแปลงไฟล์ที่ส่งทั้งหมดเป็น UTF-8 เพื่อหลีกเลี่ยงตัวอักษรแปลก ๆ ได้อย่างไร


person thclpr    schedule 28.05.2014    source แหล่งที่มา
comment
Microsoft และความรักที่พวกเขามีต่อ UTF-8 BOM..   -  person Martijn Pieters    schedule 28.05.2014


คำตอบ (2)


การระบุ การเข้ารหัส จะช่วยแก้ปัญหาของคุณได้

for line in open(textfile, 'r', encoding='utf-8-sig'):
    print(line)

utf_8_sig: ตัวแปลงสัญญาณ UTF-8 พร้อมลายเซ็น BOM

person falsetru    schedule 28.05.2014
comment
ทำงานเป็นเครื่องราง :) ฉันกำลังทำเครื่องหมายนี้ทันทีที่ฉันถึงบ้าน - person thclpr; 28.05.2014

คุณต้องตั้งค่าการเข้ารหัสไฟล์ของคุณขณะอ่านโดยใช้ UTF-8

เพิ่มพารามิเตอร์ตัวที่สามให้กับโค้ดของคุณ โดยตั้งค่าการเข้ารหัส จาก:

for line in open(textfile, 'r'):
    print(line)

to:

for line in open(textfile, 'r', encoding='utf-8-sig'):
    print (line)
person Community    schedule 28.05.2014