为什么Ruby无法将CP-1252转换为UTF-8?
我有一个从Excel保存的CSV文件,它是CP-1252/Windows-1252。我尝试了下面的方法,但结果仍然是错误的。为什么?为什么Ruby无法将CP-1252转换为UTF-8?,ruby,csv,utf-8,cp1252,ruby-csv,Ruby,Csv,Utf 8,Cp1252,Ruby Csv,我有一个从Excel保存的CSV文件,它是CP-1252/Windows-1252。我尝试了下面的方法,但结果仍然是错误的。为什么? csv_text = File.read(arg[:file], encoding: 'cp1252').encode('utf-8') # csv_text = File.read(arg[:file], encoding: 'cp1252') csv = CSV.parse csv_text, :headers => true csv.each do
csv_text = File.read(arg[:file], encoding: 'cp1252').encode('utf-8')
# csv_text = File.read(arg[:file], encoding: 'cp1252')
csv = CSV.parse csv_text, :headers => true
csv.each do |row|
# create model
p model
结果
>rake import:csv["../file.csv"] | grep Brien
... name: "Oâ?TBrien ...
但是它在控制台中工作
> "O\x92Brien".force_encoding("cp1252").encode("utf-8")
=> "O'Brien"
我可以在记事本++中打开CSV文件,编码>字符集>西欧>Windows-1252
,查看正确的字符,然后编码>转换为UTF-8
。然而,我希望Ruby能够处理很多文件
类似:。但这并不能解释为什么这是失败的
Ruby 2.4,参考:哇,这是由DevKit中的垃圾
grep
造成的
>rake import:csv["../file.csv"]
... name: "O'Brien ...
>where grep
C:\DevKit2\bin\grep.exe
我也不需要.encode('utf-8')
让这成为孩子们的一课。永远不要想当然。不要相信任何人 那
编码:“cp1252”
救了我一天!