使用RSpec和Ruby on Rails的国际字符

thy*_*agx 12 ruby testing rspec ruby-on-rails

我刚刚开始使用RSpec,我在RSpec github repo上复制了非常简单的测试,以确保事情按预期工作:

require 'spec_helper'

describe 'Home Page' do
  it "Welcomes the user" do
    visit '/products'
    page.should have_content("Welcome")
  end
end
Run Code Online (Sandbox Code Playgroud)

当我将字符串更改为"Olá"或"Caçamba"之类的问题时,问题就开始了.任何具有特殊字符的字符串.当我这样做时,我收到以下错误:

invalid multibyte char (US-ASCII) (SyntaxError)
invalid multibyte char (US-ASCII)
syntax error, unexpected $end, expecting ')'
page.should have_content("Olá")
Run Code Online (Sandbox Code Playgroud)

关于如何修复它的任何想法?也许一些配置选项?非常感谢

KL-*_*L-7 29

很可能你错过了文件顶部的魔术评论:

# encoding: UTF-8
Run Code Online (Sandbox Code Playgroud)

如果没有此指令,Ruby会尝试使用默认的US-ASCII编码来解释您的文件,并且失败,因为此字符集不包含像á或等符号ç.

这是James Edward II在Ruby中发布的关于默认源编码的博客文章.

  • BTW有一个很棒的宝石叫做[magic_encoding](https://github.com/m-ryan/magic_encoding/),它可以帮助你快速将这个评论添加到.rb文件中. (2认同)