зеркало из https://github.com/github/ruby.git
34 строки
697 B
Ruby
34 строки
697 B
Ruby
# XSD4R - Charset handling with iconv.
|
|
# Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
|
|
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
|
# either the dual license version in 2003, or any later version.
|
|
|
|
|
|
require 'iconv'
|
|
|
|
|
|
module XSD
|
|
|
|
|
|
class IconvCharset
|
|
def self.safe_iconv(to, from, str)
|
|
iconv = Iconv.new(to, from)
|
|
out = ""
|
|
begin
|
|
out << iconv.iconv(str)
|
|
rescue Iconv::IllegalSequence => e
|
|
out << e.success
|
|
ch, str = e.failed.split(//, 2)
|
|
out << '?'
|
|
warn("Failed to convert #{ch}")
|
|
retry
|
|
end
|
|
return out
|
|
end
|
|
end
|
|
|
|
|
|
end
|