2011-04-10 3 views
5

Сводная таблица стены, приведенная ниже: Как отображать символы с акцентом (так что они работают через puts и т. Д.) В Ruby?Рубиновые и акцентированные символы


Hello! Я пишу программу для своего класса, которая будет отображать некоторые предложения на испанском языке. Когда я пытаюсь использовать акцентированные символы в Ruby, они отображаются неправильно (в окне вывода NetBeans (которое отображает символы с акцентом в Java в порядке) или в командной строке).

Во-первых, некоторые из моих кодов даже не запускались, потому что акцентированные символы в моих массивах, где сбрасывали прерыватель Ruby (я думаю?). Я получил ошибки, как Ruby ожидал закрытия скобки.

Но я сделал некоторые исследования и нашел решение, чтобы добавить следующую строку кода в начале моего файла Руби:

# coding: utf-8

В NetBeans, моя программа побежал независимо от этой линии. Но мне нужно было добавить эту строку, чтобы моя программа успешно выполнялась в командной строке. (Я не знаю почему.)

У меня все еще есть проблема с отображением символов на экране. Слово «será» будет отображаться в окне вывода NetBeans как «seré». И в командной строке он рисует мало символов канала (что я не знаю, как набирать).

Делая некоторые дополнительные исследования, я слышал о:

$KCODE = 'UTF-8'

, но я не имею никакой удачи с этим.


Я использую Ruby 1.8 и 1.9 (я иду туда и обратно между разными машинами).

Спасибо, Дерек

+0

BTW, это '# encoding: utf-8'. и какую ОС вы используете? –

+0

Кажется, что они работают одинаково в обоих направлениях. Я запускаю OSX и Windows 7. Пробовал это на обоих; до сих пор не выяснили ответа. – Derek

ответ

2

командной строки в Windows 7 имеет растровые шрифты по умолчанию. И он не поддерживает юникод. Сначала вы должны изменить шрифт cmd на Lucida Console или Consolas. Затем измените кодовую страницу командной строки на chcp 65001. Вы можете сделать это вручную или добавить эту строку в свою рубиновую программу:

# encoding: utf-8 
`chcp 65001` #change cmd encoding to unicode 
puts 'será test ' 
+0

Что я не понимаю: выходная консоль NetBeans будет отображать акцентированные символы, если я работаю на Java. В Ruby отображаются неправильные символы; даже с вашим кодом. – Derek

+0

Кроме того, когда я изменяю шрифт в cmd, он теперь показывает правильный символ, но с некоторой странностью. Например: será будет отображаться с вопросительным знаком в поле сразу после á, и кажется, что символы, которые имеют букву после акцента (например, serás), отображаются с этой буквой, дважды скопированной (seráss). – Derek

+0

Извините, я ничего не знаю о NetBeans. Что касается окон cmd, я тоже заметил эту странность. Есть немного взлома: если вы введете одно место после своего слова ('puts 'será''), все будет в порядке. Извините, я не знаю, почему это происходит, но может быть, это поможет. –

Смежные вопросы