Ruby 使用gsub替换重音字符

Ruby 使用gsub替换重音字符,ruby,unicode,Ruby,Unicode,这是我的密码: text = File.read('/Users/username/Desktop/text.txt') replace = text.gsub('hai', 'hǎi') File.open('/Users/username/Desktop/text.txt', "w") {|file| file.puts replace} 我正试图从终端运行此脚本,但出现以下错误: XXXX:Desktop username$ ruby replace.rb replace.rb:2: i

这是我的密码:

text = File.read('/Users/username/Desktop/text.txt')
replace = text.gsub('hai', 'hǎi')
File.open('/Users/username/Desktop/text.txt', "w") {|file| file.puts replace}
我正试图从终端运行此脚本,但出现以下错误:

XXXX:Desktop username$ ruby replace.rb
replace.rb:2: invalid multibyte char (US-ASCII)
replace.rb:2: invalid multibyte char (US-ASCII)
replace.rb:2: syntax error, unexpected $end, expecting ')'
replace = text.gsub('hai', 'hǎi')
                               ^
实际上,我想在我的CSV文件中用重音字符替换大量字符,这些字符稍后将导出到我的MySQL数据库。

这两个链接有用吗


您可能还应该了解。

您可以尝试放置
-Ku

#!/usr/bin/env ruby  -Ku

text = File.read('file')
replace = text.gsub('hai', 'hǎi')
File.open('file1', "w") {|file| file.puts replace}

u
代表unicode。我以为你已经读到了:现在我得到了这个错误:
替换的UTF-8(ArgumentError)中的无效字节序列。rb:4:in
,这是
gsub
行。好吧,用你的例子我没有这个问题。升级时间到了?抱歉,我实际上将第4行更改为
replace=text.gsub(“A;”,“A”)
,我认为这其中有一些字符需要转义?我实际上用1.8.7进行了测试。在我这边没有问题。