2011-02-02 25 views
84

Python nhận sau như hướng dẫn trong đó xác định mã hóa tập tin của:đâu này đến từ: - * - mã hóa: utf-8 - * -

# -*- coding: utf-8 -*- 

Tôi chắc chắn đã nhìn thấy loại này của hướng dẫn trước khi (-*- var: value -*-). Nó đến từ đâu? Thông số đầy đủ là gì, ví dụ: giá trị có thể bao gồm dấu cách, ký hiệu đặc biệt, dòng mới hay thậm chí là -*- không?

Chương trình của tôi sẽ viết các tệp văn bản thuần túy và tôi muốn bao gồm một số siêu dữ liệu trong chúng bằng cách sử dụng định dạng này.

+3

Điều này dễ nhớ và hoạt động trong trình soạn thảo của tôi, PyCharm. '# coding: utf-8' – crizCraig

+0

Sử dụng' # coding: utf8' hoạt động ra khỏi hộp với Python 2.7, ngay cả bên ngoài PyCharm. (Tôi sử dụng SublimeText). – Basj

Trả lời

58

Cách chỉ định mã hóa của tệp Python xuất phát từ PEP 0263 - Defining Python Source Code Encodings.

Nó cũng được công nhận bởi GNU Emacs (xem Python Language Reference, 2.1.4 Encoding declarations), mặc dù tôi không biết đó có phải là chương trình đầu tiên sử dụng cú pháp đó hay không.

+3

Từ những gì tôi có thể kết luận từ sách hướng dẫn Emacs, giá trị có thể là bất kỳ biểu thức LISP nào, đặc biệt, một chuỗi được trích dẫn kép – hamstergene

+0

Điều cần biết. Nếu câu trả lời thỏa mãn bạn, tại sao bạn không chấp nhận nó? :) –

+0

Cảm ơn bạn đã liên kết pep. Trước đây tôi đã có ấn tượng rằng chỉ thị này chỉ được sử dụng bởi trình soạn thảo văn bản. Cho đến bây giờ, tôi không bao giờ biết rằng trình thông dịch python thực sự phân tích cú pháp nhận xét nếu nó hiện diện trên hai dòng đầu tiên của tệp. – umeboshi

5

Điều này được gọi là tệp biến cục bộ, được hiểu bởi Emac và được đặt tương ứng. Xem tương ứng section in Emacs manual - bạn có thể xác định họ hoặc trong tiêu đề hoặc trong chân của tập tin

4

Trong PyCharm, tôi muốn rời nó ra. Nó tắt chỉ báo UTF-8 ở phía dưới cùng với cảnh báo rằng mã hóa được mã hóa cứng. Đừng nghĩ rằng bạn cần bình luận PyCharm được đề cập ở trên.

Các vấn đề liên quan