Проблемы кодировки символов Ruby в netbeans и команде wíndow

Я использую 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]

1
задан salgo60 6 June 2010 в 11:08
поделиться

1 ответ

Если вы хотите использовать в исходном файле символы, отличные от 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)
# => ä
2
ответ дан 3 September 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: