First guess: File.open(fn, "rb") do |f| cheers Simon Karl von Laudermann wrote: > I'm trying to write a tiny Ruby program that will print the ascii > values of all characters in a text file. I'm doing this to help debug a > bash script, which runs under Cygwin on Windows, that makes changes to > a text file, but I suspect isn't adding carriage returns before each > line feed. My Ruby program looks like this: > > -------------- > fn = ARGV[0] > count = 0 > > File.open(fn, "r") do |f| > f.each_byte do |ch| > print "#{ch} " > count += 1 > end > end > > puts > puts "Count = #{count}" > ------------- > > When I run it on a small text file that looks like this... > > ------------- > hello > world > ------------- > > ....I get the following output: > > ------------- > 104 101 108 108 111 10 119 111 114 108 100 > Count = 11 > ------------- > > However, since I'm creating this text file in Windows Notepad, I know > that there should be a carriage return before the line feed, and the > output *should* actually be: > > ------------- > 104 101 108 108 111 13 10 119 111 114 108 100 > Count = 12 > ------------- > > Note the 13 (CR) before the 10 (LF). > > If I use Windows to look at the file properties, it confirms that the > file is actually 12 bytes in size. If I add more line breaks, the file > size increases by two for each one, while the "Count" value in the Ruby > script's output increases by only one byte for each, and no byte of > value 13 is ever displayed. > > How can I get Ruby to actually read carriage return characters from a > file? > > >