Удалить не-UTF символы из строки в Ruby?

ApplicationContext: он загружает весенние бобы, настроенные в файле конфигурации пружины, и управляет жизненным циклом весеннего боба, а КОГДА КОНТЕЙНЕР STARTS. Он не будет ждать, пока не будет вызван getBean ("springbeanref").

BeanFactory Он загружает весенние бобы, сконфигурированные в файле конфигурации пружин, управляет жизненным циклом весеннего боба, когда мы называем getBean («springbeanref»). Поэтому, когда мы называем getBean («springbeanref») во время жизни весеннего боба цикл начинается.

29
задан Wojtek B. 27 August 2012 в 18:27
поделиться

7 ответов

Вы можете использовать кодирование для этого. text.encode('UTF-8', :invalid => :replace, :undef => :replace)

Для получения дополнительной информации посмотрите в Ruby-Docs

79
ответ дан Iuri G. 27 August 2012 в 18:27
поделиться

Вы можете использовать /n, как в

text.gsub!(/\xC2/n, '')

, чтобы заставить Regexp работать с байтами.

Вы уверены, что это то, что вы хотите? Любой символ Unicode в диапазоне [U + 80, U + BF] будет иметь \xC2 в кодированной форме UTF-8.

4
ответ дан ephemient 27 August 2012 в 18:27
поделиться

Лучшее решение этой проблемы, которое я нашел, это ответ на тот же вопрос: https://stackoverflow.com/a/8711118/363293 .

Короче говоря: "€foo\xA0".chars.select(&:valid_encoding?).join

2
ответ дан Community 27 August 2012 в 18:27
поделиться

Вы можете сделать это так

# encoding: utf-8

class String
  def validate_encoding
    chars.select(&:valid_encoding?).join 
  end
end

puts "testing\xC2 a non UTF-8 string".validate_encoding
#=>testing a non UTF-8 string
7
ответ дан peter 27 August 2012 в 18:27
поделиться

Попробуйте Iconv

1.9.3p194 :001 > require 'iconv'
# => true 
1.9.3p194 :002 > string = "testing\xC2 a non UTF-8 string"
# => "testing\xC2 a non UTF-8 string" 
1.9.3p194 :003 > ic = Iconv.new('UTF-8//IGNORE', 'UTF-8')
# => #<Iconv:0x000000026c9290> 
1.9.3p194 :004 > ic.iconv string
# => "testing a non UTF-8 string" 
4
ответ дан Pritesh Jain 27 August 2012 в 18:27
поделиться
data = '' if not (data.force_encoding("UTF-8").valid_encoding?)
-1
ответ дан RedDeath 27 August 2012 в 18:27
поделиться

Ваш текст имеет кодировку ASCII-8BIT, вместо этого вы должны использовать это:

String.delete!("^\u{0000}-\u{007F}"); 

Он будет служить той же цели.

3
ответ дан XtraSimplicity 27 August 2012 в 18:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: