将非 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*")
我有以下字符串:
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*")