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
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to