Issue #13959 has been updated by nobu (Nobuyoshi Nakada).

Status changed from Open to Rejected

`:encoding => 'binary'` does not set binmode, but just makes the result encoding ASCII-8bit.
Use `IO.binread` and `IO.binwrite` to read/write binary data.

----------------------------------------
Bug #13959: IO.write(filename, Marshal.dump(obj), :encoding => 'binary') != File.open(filename, 'wb') { |fil| Marshal.dump(obj, fil) }
https://bugs.ruby-lang.org/issues/13959#change-67290

* Author: fitmap (Justin Peal)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.2p198 (2017-09-14 revision 59899) [x64-mingw32]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
For some complex objects, 

IO.write(filename, Marshal.dump(obj), :encoding => 'binary')   and   File.open(filename, 'wb') { |fil| Marshal.dump(obj, fil) }

can create different file content, and these files can't load each other by

Marshal.load(IO.read(filename, :encoding => 'binary'))   and   File.open(filename, 'rb') { |fil| return Marshal.load(fil) }

Detail is in the attached.

---Files--------------------------------
test.rb (3.13 KB)
test.txt (1.91 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>