I finished my first pass at reworking the standard CSV library to have  n m17n aware parser and generator.  I committed the changes yesterday.

Everything is documented so it should be pretty easy to figure out,  
but generally you just set the encodings for your IO or String objects  orrectly and CSV should do the rest:

   # reading example
   CSV.foreach( :encoding => ") do |row|
     # row will be parsed but not transcoded here
   end

   # writing example
   CSV.open( "wb:) do |csv|
     csv << data
     # data will be quoted and separated with characters
     # in the proper encoding
   end

And everything defaults to Encoding.default_external, naturally.

If anyone finds faults with the new system please let me know.