2011-04-10 50 views
5

以下文字墙的摘要:如何在Ruby中显示重音字符(以便它们通过puts等工作)?红宝石和重音字符


您好!我正在为我的班级编写一个程序,它将显示一些西班牙语的句子。当我尝试在Ruby中使用重音字符时,它们无法正确显示(在NetBeans输出窗口(它显示Java中的重音字符)或命令提示符中)。

起初,我的一些代码甚至没有运行,因为我的数组中的重音字符抛出Ruby中断器(我猜?)。我有错误,比如Ruby期待一个右括号。

但我做了一些研究,并发现了一个解决方案,下面的代码行添加到我的Ruby文件的开头:

# coding: utf-8

在NetBeans中,我的程序不管这条线跑了。但我需要添加这一行才能使我的程序在命令提示符下成功运行。 (我不知道为什么。)

但是,我仍然有一个问题,实际上在屏幕上显示字符。诸如“será”之类的词将在NetBeans输出窗口中显示为“seré”。并在命令提示符下绘制小管道字符(我不知道如何输入)。

做一些更多的研究,我听说:

$KCODE = 'UTF-8'

,但我并没有任何与此运气。


我使用的是Ruby 1.8和1.9(我在不同的机器之间来回切换)。

感谢, 德里克

+0

顺便说一句,它是'#encoding:utf-8'。你正在使用哪个操作系统? – 2011-04-11 06:22:17

+0

它似乎两种方式工作。我正在运行OSX和Windows 7。还没有弄清楚答案。 – Derek 2011-04-16 04:37:46

回答

2

的命令提示符在Windows 7默认有光栅字体。它不支持unicode。首先,您应该将cmd字体更改为Lucida ConsoleConsolas。然后使用chcp 65001更改命令提示符的代码页。你可以手动或将此行添加到你的红宝石程序:

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

我不明白的是:如果我使用Java工作,NetBeans输出控制台将显示重音字符。在Ruby中,它显示不正确的字符;即使使用你的代码。 – Derek 2011-04-17 00:08:18

+0

另外,当我更改cmd中的字体时,它现在显示正确的字符,但有一些奇怪。例如:será将在紧跟在á后面的一个框中显示一个问号,并且看起来重音后有一个字母的字符(例如serás)会显示该信件两次(seráss)。 – Derek 2011-04-17 00:14:01

+0

对不起,我对NetBeans一无所知。关于windows cmd,我也注意到了这种怪异。有一些小窍门:如果你在你的单词之后输入一个空格('puts'será''),一切都会好的。对不起,我不知道为什么会发生这种情况,但可能会有所帮助。 – 2011-04-17 07:42:36