【发布时间】:2011-04-19 16:58:07
【问题描述】:
我们在 db.xml 中填充了不同类型的连字符/破折号(在某些文本中)。在将它们与一些用户输入文本进行比较之前,我必须将任何类型的破折号/连字符标准化为简单的连字符/减号(ascii 45)。
我们必须转换的可能的破折号是:
Minus(−) U+2212 − or − or −
Hyphen-minus(-) U+002D -
Hyphen(-) U+2010
Soft Hyphen U+00AD ­
Non-breaking hyphen U+2011 ‑
Figure dash(‒) U+2012 (8210) ‒ or ‒
En dash(–) U+2013 (8211) –, – or –
Em dash(—) U+2014 (8212) —, — or —
Horizontal bar(―) U+2015 (8213) ― or ―
这些都必须使用 gsub 转换为连字符减号(-)。 我使用 CharDet gem 来检测获取的字符串的字符编码类型。它显示 windows-1252。我试过 Iconv 将编码转换为 ascii。但它抛出异常 Iconv::IllegalSequence。
ruby -v => ruby 1.8.7 (2009-06-12 补丁级别 174) [i686-darwin9.8.0]
rails -v => Rails 2.3.5
mysql 编码 => 'latin1'
知道如何做到这一点吗?
【问题讨论】:
标签: ruby-on-rails ruby unicode hyphen text-normalization