2010-07-07 35 views
9

Trong bảng điều khiển khi tôi đang cố gắng sản xuất ký tự tiếng Nga Nó cho tôi ???????????????Làm thế nào để viết các ký tự tiếng Nga trong hồ sơ?

Ai biết lý do?

Tôi đã cố gắng ghi vào tệp - trong trường hợp này là tình huống tương tự.

ví dụ

f=open('tets.txt','w') 
f.write('some russian text') 
f.close 

bên trong tập tin là - ?????????????????????????/

hoặc

p="some russian text" 
print p 
????????????? 

Trong Notepad bổ sung không cho phép tôi lưu tệp bằng chữ cái tiếng Nga. Tôi đưa ra điều này:

This file contains characters in Unicode format which will be lost if you save this file as an ANSI encoded text file. To keep the Unicode information, click Cancel below and then select one of the Unicode options from the Encoding drop down list. Continue?

Cách điều chỉnh hệ thống của tôi, vì vậy tôi sẽ không gặp phải vấn đề này.

+0

Tiêu đề của câu hỏi này được chọn khá kém! –

+0

Thực sự là '?' Hay đúng hơn là ' '? – Gumbo

+0

@Gumbo: '? 'Được sử dụng khi mục tiêu không thể * lưu trữ * ký tự đã cho bởi vì nó nằm ngoài dải ký tự. Ví dụ. cơ sở dữ liệu và đầu ra (file/stdout/etc) nhà văn.' ' được sử dụng khi mục tiêu có thể * hiển thị * ký tự đã cho, nhưng không làm vì nó nằm ngoài phạm vi của bộ ký tự mà nó được hướng dẫn sử dụng. Ví dụ. webbrowsers. Tất cả với tất cả, nó có nghĩa là '?' Được sử dụng ở đây. – BalusC

Trả lời

12

Đây là ví dụ đã được giải quyết, vui lòng đọc các nhận xét:

#!/usr/bin/env python2 
# -*- coding: utf-8 -*- 
# The above encoding declaration is required and the file must be saved as UTF-8 

from __future__ import with_statement # Not required in Python 2.6 any more 

import codecs 

p = u"абвгдежзийкл" # note the 'u' prefix 

print p # probably won't work on Windows due to a complex issue 

with codecs.open("tets.txt", "w", "utf-16") as stream: # or utf-8 
    stream.write(p + u"\n") 

# Now you should have a file called "tets.txt" that can be opened with Notepad or any other editor 
+0

Tôi gặp lỗi: SyntaxError: non ASCI character '\ xff 'trong tập tin' tập tin python của tôi ', nhưng không có mã hóa khai báo – Pol

+0

Tôi đã khai báo mã hóa, đó là những gì dòng thứ hai là cho. Và không có ký tự '\ xff' (trong đó có 'ÿ') trong tệp. Bạn có chắc chắn rằng bạn đã làm tất cả mọi thứ một cách chính xác, và làm tất cả các nhân vật hiển thị một cách chính xác trong Notepad? – Philipp

1

Bạn đang sử dụng bảng điều khiển nào? Rất có thể, bảng điều khiển của bạn không hỗ trợ ngôn ngữ đó. Hãy chắc chắn rằng giao diện điều khiển của bạn hỗ trợ Unicode (và ứng dụng của bạn đang gửi chuỗi Unicode).

Cập nhật:

Để giải quyết những cập nhật cho câu hỏi của bạn về vấn đề với Notepad của Windows: Nhấp vào File-> Save As, và sau đó chọn "Unicode" từ danh sách thả xuống "Encoding".

+0

Tôi đã thử 3 bảng điều khiển khác nhau! Nó không phải là một ứng dụng ... – Pol

+1

Bạn đã thử bàn giao tiếp nào? Bạn đang sử dụng hệ điều hành nào? Bạn có thể xuất thành công các ký tự tiếng Nga sang bàn điều khiển của mình bằng ngôn ngữ lập trình khác ngoài Python? – bta

+0

Tôi không để ý khi nào nó vui vẻ. Nhưng nó vui vẻ, sau khi tôi cài đặt phần mở rộng giống như PYMSSQL và ODBC. Nó có thể được ra khỏi nó? – Pol

2

Bạn cần xác định mã hóa tệp nếu nó chứa ký tự không phải ASCII.

http://www.python.org/dev/peps/pep-0263/

+0

Hôm qua nó đã hoạt động? – Pol

+0

Nó không giúp được! Và ngay cả khi tôi đang trốn tiết kiệm văn bản tiếng Nga trong Notepad nó nói rằng tôi không thể cứu. Vì tôi mất dữ liệu của mình. – Pol

+0

Làm theo lời khuyên của Notepad và chọn một trong các mã hóa Unicode. – Philipp

0

Bạn có đang nhập bàn điều khiển quá hoặc chỉ nhận kết quả trong bảng điều khiển không? Điều này trông một vấn đề pep-0263 như petraszd nói.

print p.decode('your-system-encoding') 

nên làm việc trong giao diện điều khiển (tôi không biết là những gì mà hệ thống mã hóa bạn sử dụng cho Nga)

Nếu bạn đang sử dụng một file .py, bạn cần phải đặt # -*- coding: UTF-8 -*- (thay thế utf-8 với mã hóa Rusian) ở đầu tệp và tôi cho rằng không cần .decode trong print nếu hệ điều hành của bạn được định cấu hình bằng mã hóa đúng. (Ít nhất là tôi không cần nó nhưng tôi không biết làm thế nào nó hoạt động với tiếng Nga)

+0

Khi tôi gõ tất cả là ok. Khi tôi đặt mã # - * này: UTF-8 - * - Tôi gặp lỗi: Cú phápError: không phải ký tự ASCI '\ xff' trong tệp – Pol

5

Thử mở file sử dụng các codec, bạn cần phải

import codecs 

và sau đó

writefile = codecs.open('write.txt', 'w', 'utf-8') 
Các vấn đề liên quan