我正在从远程站点提取文本并尝试将其加载到默认使用utf-8的Ruby 1.9/Rails 3应用程序中.
以下是一些违规文字的示例:
Cancer Res; 71(3); 1-11. ©2011 AACR.\n
Run Code Online (Sandbox Code Playgroud)
扩展的版权代码如下所示:
Cancer Res; 71(3); 1-11. \xC2\xA92011 AACR.\n
Run Code Online (Sandbox Code Playgroud)
Ruby告诉我字符串被编码为ASCII-8BIT并且输入我的Rails应用程序让我这样:
incompatible character encodings: ASCII-8BIT and UTF-8
Run Code Online (Sandbox Code Playgroud)
我可以使用此正则表达式删除版权代码
str.gsub(/[\x00-\x7F]/n,'?')
Run Code Online (Sandbox Code Playgroud)
产生这个
Cancer Res; 71(3); 1-11. ??2011 AACR.\n
Run Code Online (Sandbox Code Playgroud)
但是如何在UTF-8中将版权符号(以及其他各种符号,如希腊字母)转换为相同的符号?当然有可能......
我看到使用force_encoding的引用,但这不起作用:
str.force_encoding('utf-8').encode
Run Code Online (Sandbox Code Playgroud)
我意识到还有很多其他人有类似的问题,但我还没有看到一个有效的解决方案.
我刚刚开始使用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)
关于如何修复它的任何想法?也许一些配置选项?非常感谢
如何将法语字符放在Ruby文件中?这是一个错误:
SyntaxError in ArticlesController#show
/.../app/controllers/articles_controller.rb:47: invalid multibyte char (US-ASCII)
/.../app/controllers/articles_controller.rb:47: invalid multibyte char (US-ASCII)
/.../app/controllers/articles_controller.rb:47: syntax error, unexpected $end, expecting '}'
...@article, notice: 'Article a été créé avec succes.' }
Run Code Online (Sandbox Code Playgroud)
在HTML文件中,将其置于头部并且重音符号有效:
<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html"; charset="utf8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<!-- ... autres mentions de l'entête de fichier ... -->
</head>
Run Code Online (Sandbox Code Playgroud)