2011-10-08 22 views
25

tôi có thể chỉ định bất kỳ tập tin ruby ​​để sử dụng mã hóa cụ thể bằng cách thêm một dòng chú thích ở đầu trang của nó:Trong Ruby on Rails, '#encoding: utf-8' và 'config.encoding = "utf-8"' có khác nhau không?

#encoding: utf-8 

Nhưng trong Rails' config/application.rb, tôi thấy điều này:

config.encoding = "utf-8" 

Họ có khác nhau? Nếu tôi đã đặt config.encoding = "utf-8", tôi vẫn cần #encoding: utf-8?

Trả lời

39

Phần config.encoding = "utf-8" trong config/application.rb liên quan đến cách đường ray nên diễn giải nội dung.

#encoding: utf-8 trong tệp ruby ​​cho biết rằng tệp này chứa các ký tự không phải ascii.

Hai trường hợp này khác nhau. Người đầu tiên (trong config/application.rb) nói với một cái gì đó rails, và không có gì cả để làm với cách ruby ​​chính nó nên giải thích các tập tin nguồn.

Bạn có thể đặt biến môi trường RUBYOPT=-Ku nếu bạn lười và muốn tự động đặt mã hóa tệp mặc định là .rb tệp thành utf-8, nhưng tôi khuyên bạn nên đặt các bit không phải ascii của bạn trong một tệp dịch và tham khảo điều đó với I18n.t.

+0

'cách đường ray nên diễn giải nội dung'? Bạn có thể đưa ra một ví dụ? –

+0

Điều này liên quan đến những gì mã hóa đường ray nên sử dụng khi nói chuyện với cơ sở dữ liệu, hoặc lấy dữ liệu từ một hình thức, ví dụ. – Frost

+12

Thực ra '#encoding: utf-8' bảo ruby ​​thành * giải thích * nguồn của tệp là' utf-8', ngay cả khi nó không chứa bất kỳ ký tự không phải ascii nào. ;) –