我遇到的情况是,当编码为 utf-8 json 时,有时会使用 \u00a0
(不间断空格)而不是空格来发送来自 html 文本区域或输入的用户输入数据。
我认为这是 Firefox 中的一个错误,因为我知道用户不是故意放入不间断空格而不是空格。
Ruby 中还有两个 bug,其中一个可以用来对抗另一个。
出于某种原因,\s
与 \u00a0
不匹配。
但是 [^[:print:]]
,这绝对不应该匹配)和 \xC2\xA0
两者都会匹配,但我认为那些更少 -处理这个问题的方法并不理想。
还有其他解决此问题的建议吗?
最佳答案
使用 /\u00a0/
匹配不间断空格。例如 s.gsub(/\u00a0/, ' ')
将所有不间断空格转换为常规空格。
使用 /[[:space:]]/
匹配所有空格,包括 Unicode 空格,如不间断空格。这与 /\s/
不同,后者仅匹配 ASCII 空格。
另请参阅:Ruby Regexp documentation
https://stackoverflow.com/questions/2588942/