filesystem/shift_jis_paths_no_parens.rb

tests/_examples/filesystem/shift_jis_paths_no_parens.rb in the metorex repository.

require "tmpdir"

# On macOS a path in another ASCII-compatible encoding reaches the system as
# the characters it spells, so a name written in Windows-31J finds the file
# written under the same name in UTF-8.
Dir.mktmpdir do |directory|
  named = File.join directory, "rates_あ.txt"
  File.write named, "12"
  shift_jis = named.encode Encoding::Windows_31J
  p File.exist? shift_jis
  p File.size shift_jis
  p File.read shift_jis
  moved = File.join(directory, "moved_あ.txt").encode Encoding::Windows_31J
  File.rename shift_jis, moved
  p File.file? named
  resolved = File.realpath moved
  p File.basename(resolved).encoding
end

Output:

true
2
"12"
false
#<Encoding:Windows-31J>