[MacRuby-devel] converting UTF-8 to MacRoman still output UTF-8

Yvon Thoraval yvon.thoraval at gmail.com
Wed Apr 21 03:12:27 PDT 2010


if i make use of the (pseudo) Iconv :
macroman = Iconv.new('macintosh', 'utf-8', str)

i found MacRoman is internally 'macintosh' because :
puts "CFStringConvertEncodingToIANACharSetName(KCFStringEncodingMacRoman) =
#{CFStringConvertEncodingToIANACharSetName(KCFStringEncodingMacRoman)}"

gave me :
# => CFStringConvertEncodingToIANACharSetName(KCFStringEncodingMacRoman) =
macintosh

i get back a string (saved to file) still in UTF-8 encoded.

then i've read the source of
"/Library/Frameworks/MacRuby.framework/Versions/0.6/usr/lib/ruby/1.9.0/iconv.rb"

and put some part in a moke-up like that :

framework 'Foundation'
str = "une phrase accentuée, ça vous va ?"
puts str
puts "str.size = #{str.size}, str.encoding = #{str.encoding}"

def to_macroman(str)
  data = CFStringCreateExternalRepresentation(nil, str,
KCFStringEncodingMacRoman, 0)
  if data.nil?
    raise "can't retrieve data from `#{str}'"
  end
  dest = CFStringCreateFromExternalRepresentation(nil, data,
KCFStringEncodingMacRoman)
  if dest.nil?
    raise "can't convert data from `#{str}'"
  end
  CFRelease(data)
  CFRelease(dest)
  dest.mutableCopy
  return dest
end

macroman = to_macroman(str)
puts "macroman.size = #{macroman.size}, macroman.encoding =
#{macroman.encoding}"
File.open("#{SIGNATURES_FOLDER}macroman.txt",
File::WRONLY|File::TRUNC|File::CREAT, 0666) {|f| f.print macroman}


giving the output :
une phrase accentuée, ça vous va ?
str.size = 34, str.encoding = UTF-8
macroman.size = 34, macroman.encoding = UTF-8


then i ask why this doesn't convert to MacRoman, as the internal iconv.rb
????

best,

Yvon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20100421/131ddc2f/attachment-0001.html>


More information about the MacRuby-devel mailing list