【问题标题】:Ruby and Accented Characters红宝石和重音字符
【发布时间】:2011-08-02 15:25:00
【问题描述】:

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


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

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

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

# coding: utf-8

在 NetBeans 中,我的程序运行与这一行无关。但是我需要添加这一行才能让我的程序在命令提示符中成功运行。 (我不知道为什么。)

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

做了更多的研究,我听说了:

$KCODE = 'UTF-8'

但我对此没有任何运气。


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

谢谢, 德里克

【问题讨论】:

  • 顺便说一句,它是# encoding: utf-8。您使用的是哪个操作系统?
  • 这两种方式似乎都一样。我正在运行 OSX 和 Windows 7。两者都试过了;还没找到答案。

标签: ruby utf-8 non-ascii-characters


【解决方案1】:

默认情况下,Windows 7 中的命令提示符具有光栅字体。而且它不支持unicode。首先,您应该将 cmd 字体更改为Lucida ConsoleConsolas。然后使用chcp 65001 更改命令提示符的代码页。您可以手动完成或将此行添加到您的 ruby​​ 程序中:

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

【讨论】:

  • 我不明白的是:如果我在 Java 中工作,NetBeans 输出控制台会显示重音字符。在 Ruby 中,它显示不正确的字符;即使使用您的代码。
  • 另外,当我在 cmd 中更改字体时,它现在显示正确的字符,但有些奇怪。例如:será 将在 á 之后的方框中显示一个问号,并且似乎重音后有一个字母的字符(例如 serás)显示时将该字母复制了两次(seráss)。
  • 抱歉,我对 NetBeans 一无所知。关于 windows cmd,我也注意到了这种奇怪之处。有一些小技巧:如果您在单词后输入一个空格 (puts 'será '),一切都会好起来的。抱歉,我不知道为什么会这样,但可能会有所帮助。
  • 它在 cmd 中对我有用,但是最新的 netbeans 版本呢?它是否使用正确打印:# coding: utf-8
猜你喜欢
  • 2010-12-16
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2014-02-11
  • 2011-01-21
  • 2015-01-21
相关资源
最近更新 更多