将非ascii标点符号转换为ascii

时间:2015-12-07 15:27:46

标签: ruby encoding non-ascii-characters

我有以下字符串:

  

你的简历是非encyclopædia

注意'éæ是非ascii。我希望完整地保留éæ,但将'替换为ascii引号:'

如何在Ruby(而非Rails)中进行此类转换?我的数据库是UTF8,我仍然想存储重音字符,包括kanjis,中文等,但只是想替换标点符号。

2 个答案:

答案 0 :(得分:1)

发现这个宝石完全符合我的要求 - https://github.com/qwuen/punctuate

只需.punctuate!

irb(main):001:0> require 'punctuate'
=> true
irb(main):002:0> "Your résumé’s a non–encyclopædia".punctuate!
=> "Your résumé's a non-encyclopædia"

答案 1 :(得分:1)

"’".bytes返回[226, 128, 153]字符的字节 通过each_char循环遍历每个字符,并将每个字符的字节与[226, 128, 153]进行比较,然后将该字符替换为正常的'字节,即[39] [39].pack("c*")