Mercurial > hg > soundsoftware-site
view lib/redmine/codeset_util.rb @ 493:7a2bb9c5fb34 feature_142
Some experiments toward adding a Members entry to the project menu (for feature #142)
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Wed, 13 Jul 2011 11:03:57 +0100 |
parents | cbce1fd3b1b7 |
children | cbb26bc654de |
line wrap: on
line source
require 'iconv' module Redmine module CodesetUtil def self.replace_invalid_utf8(str) return str if str.nil? if str.respond_to?(:force_encoding) str.force_encoding('UTF-8') if ! str.valid_encoding? str = str.encode("US-ASCII", :invalid => :replace, :undef => :replace, :replace => '?').encode("UTF-8") end else ic = Iconv.new('UTF-8', 'UTF-8') txtar = "" begin txtar += ic.iconv(str) rescue Iconv::IllegalSequence txtar += $!.success str = '?' + $!.failed[1,$!.failed.length] retry rescue txtar += $!.success end str = txtar end str end end end