将非 ascii 标点符号转换为 ascii

Convert non-ascii punctuation to ascii

我有以下字符串:

Your résumé’s a non–encyclopædia

注意 'éæ 是非 ASCII 码。我想保持 éæ 不变,但将 ' 替换为 ascii 引号:'.

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

发现这个 gem 完全符合我的要求 - 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"

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