ข้อความแสดงข้อผิดพลาดจะบอกคุณว่ามีอะไรผิดปกติ Python interpreter จำเป็นต้องรู้การเข้ารหัสของอักขระที่ไม่ใช่ ASCII
ถ้าคุณต้องการส่งคืนU + 00A3คุณสามารถพูดได้
return u'\u00a3'
ซึ่งแสดงถึงตัวละครนี้ใน ASCII บริสุทธิ์โดยวิธีการเรียงลำดับ Unicode ถ้าคุณต้องการส่งกลับสตริงไบต์ที่มีตัวอักษร 0xA3 ไบต์นั่นคือ
return b'\xa3'
(โดยที่ใน Python 2 นั้นb
เป็นนัย แต่ชัดเจนดีกว่าโดยนัย)
PEP ที่เชื่อมโยงในข้อความแสดงข้อผิดพลาดจะบอกให้คุณทราบถึงวิธีการบอก Python "ไฟล์นี้ไม่ได้เป็น ASCII แท้ๆนี่คือการเข้ารหัสที่ฉันใช้" ถ้าการเข้ารหัสเป็น UTF-8 นั่นน่าจะเป็น
# coding=utf-8
หรือเข้ากันได้กับ Emacs
# -*- encoding: utf-8 -*-
หากคุณไม่ทราบว่าการเข้ารหัสใดที่โปรแกรมแก้ไขของคุณใช้ในการบันทึกไฟล์นี้ให้ตรวจสอบด้วยโปรแกรมแก้ไข hex และ googling กองล้นการเข้ารหัสอักขระแท็กมีหน้าข้อมูลแท็กพร้อมข้อมูลเพิ่มเติมและเคล็ดลับการแก้ปัญหา
มีหลายคำที่อยู่นอกเหนือจากช่วง ASCII 7 บิต (0x00-0x7F) Python ไม่สามารถและไม่ต้องเดาว่าสตริงใดที่เรียงตามลำดับไบต์ https://tripleee.github.io/8bit#a3แสดงการตีความที่เป็นไปได้ 21 รายการสำหรับไบต์ 0xA3 และเป็นเพียงการเข้ารหัส 8 บิตแบบดั้งเดิมเท่านั้น แต่ก็อาจเป็นไบต์แรกของการเข้ารหัสแบบหลายไบต์ได้เป็นอย่างดี แต่ในความเป็นจริงฉันคิดว่าคุณใช้ละติน -1 จริง ๆ คุณควรมี
# coding: latin-1
เป็นบรรทัดแรกหรือบรรทัดที่สองของไฟล์ต้นฉบับของคุณ อย่างไรก็ตามหากปราศจากความรู้ว่าอักขระตัวไหนที่ไบท์ควรจะเป็นตัวแทนมนุษย์ก็ไม่สามารถเดาได้เช่นกัน
ข้อแม้: coding: latin-1
จะลบข้อความแสดงข้อผิดพลาด (เนื่องจากไม่มีลำดับไบต์ที่ไม่ได้รับอนุญาตทางเทคนิคในการเข้ารหัสนี้) แต่อาจสร้างผลลัพธ์ที่ผิดอย่างสมบูรณ์เมื่อรหัสถูกตีความหากการเข้ารหัสที่แท้จริงนั้นเป็นอย่างอื่น คุณต้องรู้การเข้ารหัสไฟล์ด้วยความมั่นใจอย่างสมบูรณ์เมื่อคุณประกาศการเข้ารหัส