2013-03-01 38 views
8

Khi chạy script python3 tôi từ Sublime Văn bản 2, các lỗi sau occures:Sublime Văn bản 2 lỗi mã hóa với python3 xây dựng

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) 

Hơn nữa, khi chạy kịch bản tương tự từ các thiết bị đầu cuối, vấn đề không xuất hiện .

Các thiết lập xây dựng hệ thống cho Sublime như sau:

{ 
"cmd": ["python3", "-u", "$file"], 
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
"selector": "source.python", 
"encoding": "utf8", 
"path": "/Library/Frameworks/Python.framework/Versions/3.3/bin/" 
} 

Cảm ơn trước!

Trả lời

28

Sau một số cuộc điều tra và nghiên cứu, tôi đã tìm ra vấn đề là gì:

Thiếu biến env LANG trong tiến trình con, chạy bằng chữ Sublime 2. Tôi cố định nó bằng cách chỉ cần thêm biến LANG trong cài đặt của tôi xây dựng như như vậy:

{ 
"cmd": ["python3", "-u", "$file"], 
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
"selector": "source.python", 
"env": {"LANG": "en_US.UTF-8"} 
} 
+0

Tuyệt vời! Giải quyết vấn đề của tôi. – jostyposty

+1

Tuyệt vời! Cũng làm việc cho Sublime Text 3 – chris838

+1

Vì vậy, tôi sắp sửa đăng câu hỏi này chỉ để cung cấp câu trả lời, nhưng tôi đoán tôi sẽ chỉ bình luận ở đây. Tôi đã thử điều này, và nó không hoạt động. Có lẽ, vì tôi đang làm việc trên một chiếc mac. Điều gì đã làm cho các trick cho tôi không phải là thiết lập biến LANG env, nhưng LC_CTYPE để "UTF-8". Tôi thực sự đã tìm kiếm 3 giờ, đánh dấu các dấu răng trái trên đầu bảng của tôi và do đó tại sao điều này có thể hữu ích. – Ekkstein

1

Giải pháp của Martin hiệu quả! Trong môi trường Windows/Python3.5 chỉ thay vì "LANG", hãy đặt như sau:

"env": {"PYTHONIOENCODING": "utf8"} 
Các vấn đề liên quan