簡體   English   中英

如何在Ruby中刪除4個字節的utf-8字符?

[英]How to remove 4 byte utf-8 characters in Ruby?

由於MySQL的utf8不支持4字節字符,我正在尋找一種方法來檢測並消除Ruby中字符串中的任何4字節utf8字符。 我知道我可以更新我的表使用utf8m4,但有幾個原因是不可能或所需的解決方案。

簡單地將字符串編碼為ASCII將刪除這些字符,但也會刪除所有其他非ASCII字符,這是不好的。

以下似乎在Ruby 1.9.3中對我有用:

input.each_char.select{|c| c.bytes.count < 4 }.join('')

例如:

input = "hello \xF0\xA9\xB6\x98 world"                  # includes U+29D98
input.each_char.select{|c| c.bytes.count < 4 }.join('') # 'hello  world'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM