ASh*_*lly 17
ascii_str = yourUTF8text.unpack("U*").map{|c|c.chr}.join
Run Code Online (Sandbox Code Playgroud)
假设您的文本确实适合ascii字符集.
Dem*_*ema 13
我终于设法用iconv做了,我只是弄乱了参数.那么,你就是这样做的:
require 'iconv'
utf8_csv = File.open("utf8file.csv").read
# gotta be careful with the weird parameters order: TO, FROM !
ansi_csv = Iconv.iconv("LATIN1", "UTF-8", utf8_csv).join
File.open("ansifile.csv", "w") { |f| f.puts ansi_csv }
Run Code Online (Sandbox Code Playgroud)
而已!
我有一个类似的问题,试图从服务器上的用户生成的内容生成CSV文件.我找到了unidecoder gem,它可以很好地将unicode字符音译成ascii.
例:
"olá, mundo!".to_ascii #=> "ola, mundo!"
"??".to_ascii #=> "Ni Hao "
"Jürgen Müller".to_ascii #=> "Jurgen Muller"
"Jürgen Müller".to_ascii("ü" => "ue") #=> "Juergen Mueller"
Run Code Online (Sandbox Code Playgroud)
对于我们简单的用例,这很好用.
Pivotal Labs有一篇关于unicode音译的博文,对ascii进行了更详细的讨论.
从ruby 1.9开始,有一种更简单的方法:
yourstring.encode('ASCII')
Run Code Online (Sandbox Code Playgroud)
为避免无效(非ASCII)字符出现问题,您可以忽略这些问题:
yourstring.encode('ASCII', invalid: :replace, undef: :replace, replace: "_")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23931 次 |
| 最近记录: |