From: "mghomn (Justin Peal)" Date: 2013-04-26T11:32:58+09:00 Subject: [ruby-core:54593] [ruby-trunk - misc #8329][Open] Cannot change \r\n to \n (Windows/DOS to Unix) Issue #8329 has been reported by mghomn (Justin Peal). ---------------------------------------- misc #8329: Cannot change \r\n to \n (Windows/DOS to Unix) https://bugs.ruby-lang.org/issues/8329 Author: mghomn (Justin Peal) Status: Open Priority: Normal Assignee: Category: Target version: I want to change all of my ruby files to UTF-8 encoded and Unix format, but after the running of the following program, the files' formats are still Windows/DOS (\r\n) but not Unix (\n). How could I do? =============================== class String def utf8? self =~ /\A\p{Assigned}*\z/ rescue false end end class Tounix def replace text text.gsub(/\x0d\x0a/, "\n") end def load filename_rb text = File.read(filename_rb, :mode => 'rt:bom|utf-8') unless text.utf8? text = File.read(filename_rb, :mode => 'rt:gb18030') text = text.encode('utf-8') end text end def save filename_rb, new_text File.write(filename_tm = filename_rb + '.t~m~p', new_text, :mode => 'wb:utf-8') File.rename(filename_tm, filename_rb) end def parse filename_rb text = load(filename_rb) new_text = replace(text) save(filename_rb, new_text) if changed = (new_text != text) yield changed if block_given? end def search pattern Dir.glob(pattern) do |filename_rb| parse(filename_rb) do |changed| yield filename_rb, changed if block_given? end end end end if $0 == __FILE__ Tounix.new.search('**/*.rb') do |filename_rb, changed| print '%-9s' % (changed ? 'Changed' : ''), filename_rb, "\n" end end -- http://bugs.ruby-lang.org/