Я использую netbeans в качестве разработки IDE, и запускает приложение от cmd, но имейте проблемы для отображения символов ISO 8859-1 как åäö, корректный и в cmd окне и в когда я запускаю приложение от netbeans
Вопрос: Что лучшая практика должна настроить его
Прямо сейчас я делаю
@output.puts indent + "V" + 132.chr + "lkommen till Ruby Camping!"
получить ä
Моя среда
> chcp 65001
Active code page: 65001
> рубин main.rb
Source encoding: <Encoding:US-ASCII>
Default external: #<Encoding:UTF-8>
Default internal: nil
Locale charmap: "CP65001"
где я имею в коде
def self.printEncoding
puts "Source encoding: #{__ENCODING__.inspect}" if defined? __ENCODING__
if defined? Environment::Encoding
puts "Default external: #{Encoding.default_external.inspect}"
puts "Default internal: #{Encoding.default_internal.inspect}"
puts "Locale charmap: #{ Encoding.locale_charmap.inspect}"
end
puts "LANG environment variable: #{ENV['LANG'].inspect}" unless ENV['LANG'].nil?
end
> рубин-v рубин 1.9.1p378 (10.01.2010 пересмотров 26273) [i386-mingw32]
Если вы хотите использовать в исходном файле символы, отличные от ASCII, вам необходимо объявить кодировку исходного файла. Самая первая строка исходного файла (или вторая, если у вас есть строка shebang) должна быть строкой комментария, которая (приблизительно) соответствует regexp
#.*?coding[:=]?\s+(.*)(?:\s+.*)?
Другими словами: строка комментария, которая начинается с некоторого материала, затем содержит строку coding
, за которой следует необязательный символ, за которым следует имя допустимой кодировки, за которым следует некоторый другой материал.
Итак, если вы поместите
# coding: ISO-8859-1
в начало вашего файла, то все будет в порядке. Обратите внимание, что regexp явно разработан для совместимости с такими редакторами, как Vim:
# vim: fileencoding=UTF-8 ft=ruby syn=ruby ts=2 sw=2 ai eol et si
или Emacs:
# *-* mode: ruby; coding: utf-8; tab-width: 2; indent-tabs-mode: nil *-*
Одна вещь, которая всегда ставит меня в тупик, это то, что Ruby не всегда автоматически перекодирует строки. Вы должны перекодировать их сами:
puts 'ä'
# => ä
puts 'ä'.encode($>.external_encoding || Encoding.default_external)
# => ä