I haven't fully investigated, but I think data read from a pipe on Ruby 1.9 is tagged with the "ascii 8bit" (which apparently is equivalent to "binary") encoding, whereas 1.9 tags the data with the default_external encoding (which is whatever your locale settings specify).