Hi guys! I have a company model with a name attribute. Each company is association a set of projects. I created a feature which allows users to download a csv version of these projects. The download will give you a zipped file of all projects grouped by company. So the zip file contains x number of csv files where x is the number of companies. Everything is working nice. But when a user created a company whose name contains greek characters, I suddenly get issues with encoding. Here''s a small part of the code that creates the zip file (i''m using zipruby btw) Zip::Archive.open(file, Zip::CREATE) do |archive| companies.each do |company| data = CSV.generate(row_sep: "\r\n", quote_char: ''"'', force_quotes: true) do |csv| company.projects.each { |project| csv << project.name } end archive.add_buffer "#{company.name}.csv", data end end so when company.name contains greek characters, i get a filename similar to company??????.csv which cant be opened. I can''t find a way to set the encoding of the filename so I just gsubbed it and ignored all non-ascii characters which is fine. But if one of the projects also has a greek character, then the csv file will contain weird non-greek characters. Any help or insight is appreciated. Thanks! -- ------------------------------------------------------------- visit my blog at http://jimlabs.heroku.com -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit https://groups.google.com/groups/opt_out.
Hi Jim, Looks that you have encoding problems, check your current encoding puts Encoding.default_external To solve your problem it should be UTF-8. Because according to the docs http://www.ruby-doc.org/core-1.9.3/Encoding.html#method-c-default_external *"File <http://www.ruby-doc.org/core-1.9.3/File.html> data written to disk will be transcoded to the default external encoding when written."* * * Or you can use additional options :encoding in CSV.generate (http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html#method-c-generate) On Tuesday, November 13, 2012 9:24:01 AM UTC+2, jim wrote:> > Hi guys! > > I have a company model with a name attribute. Each company is association > a set of projects. I created a feature which allows users to > download a csv version of these projects. The download will give you a > zipped file of all projects grouped by company. So the zip file contains x > number of csv files where x is the number of companies. Everything is > working nice. > > But when a user created a company whose name contains greek > characters, I suddenly get issues with encoding. Here''s a small part of > the code that creates the zip file (i''m using zipruby btw) > > Zip::Archive.open(file, Zip::CREATE) do |archive| > companies.each do |company| > data = CSV.generate(row_sep: "\r\n", quote_char: ''"'', force_quotes: > true) do |csv| > company.projects.each { |project| csv << project.name } > end > > archive.add_buffer "#{company.name}.csv", data > end > end > > so when company.name contains greek characters, i get a filename similar > to company??????.csv which cant be opened. I can''t find a > way to set the encoding of the filename so I just gsubbed it and ignored > all non-ascii characters which is fine. But if one of the projects also > has a greek character, then the csv file will contain weird non-greek > characters. > > Any help or insight is appreciated. Thanks! > > > -- > ------------------------------------------------------------- > visit my blog at http://jimlabs.heroku.com >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/74A_AKUpG08J. For more options, visit https://groups.google.com/groups/opt_out.
On Wed, Nov 14, 2012 at 11:21 PM, Max Shytikov <mshytikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi Jim,Hi Max, thanks for replying. I gave> Looks that you have encoding problems, check your current encoding > > puts Encoding.default_external >> To solve your problem it should be UTF-8. Because according to the docs > http://www.ruby-doc.org/core-1.9.3/Encoding.html#method-c-default_external > > *"File <http://www.ruby-doc.org/core-1.9.3/File.html> data written to > disk will be transcoded to the default external encoding when written."* >I checked that out, it is set to utf-8>> Encoding.default_external=> #<Encoding:UTF-8>> Or you can use additional options :encoding in CSV.generate ( > http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html#method-c-generate > ) >i''ll try this one out but it seems like if i pass the encoding here, all strings passed will be processed as having that encoding right? But anyway, it''s the only lead I have so I''ll give it a try. Thanks!> > > On Tuesday, November 13, 2012 9:24:01 AM UTC+2, jim wrote: >> >> Hi guys! >> >> I have a company model with a name attribute. Each company is >> association a set of projects. I created a feature which allows users to >> download a csv version of these projects. The download will give you a >> zipped file of all projects grouped by company. So the zip file contains >> x >> number of csv files where x is the number of companies. Everything is >> working nice. >> >> But when a user created a company whose name contains greek >> characters, I suddenly get issues with encoding. Here''s a small part of >> the code that creates the zip file (i''m using zipruby btw) >> >> Zip::Archive.open(file, Zip::CREATE) do |archive| >> companies.each do |company| >> data = CSV.generate(row_sep: "\r\n", quote_char: ''"'', force_quotes: >> true) do |csv| >> company.projects.each { |project| csv << project.name } >> end >> >> archive.add_buffer "#{company.name}.csv", data >> end >> end >> >> so when company.name contains greek characters, i get a filename similar >> to company??????.csv which cant be opened. I can''t find a >> way to set the encoding of the filename so I just gsubbed it and ignored >> all non-ascii characters which is fine. But if one of the projects also >> has a greek character, then the csv file will contain weird non-greek >> characters. >> >> Any help or insight is appreciated. Thanks! >> >> >> -- >> ------------------------------**------------------------------**- >> visit my blog at http://jimlabs.heroku.com >> > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/74A_AKUpG08J. > For more options, visit https://groups.google.com/groups/opt_out. > > >-- ------------------------------------------------------------- visit my blog at http://jimlabs.heroku.com -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit https://groups.google.com/groups/opt_out.