encodings/c_locale.rb

tests/_examples/encodings/c_locale.rb in the metorex repository.

# encoding: utf-8
# Under the C locale the text a program reads and writes is US-ASCII. A name
# the file system gives that US-ASCII cannot hold is tagged binary, a broken
# US-ASCII string shows its bytes, and a Symbol past ASCII is quoted.
require "tmpdir"

p(Encoding.default_external)
p(Encoding.find("filesystem"))
p(STDIN.external_encoding)
p(ARGV.map(&:encoding))

Dir.mktmpdir do |root|
  File.write(File.join(root, "café.txt"), "")
  name = Dir.children(root).first
  p([name.encoding, name.valid_encoding?])
end

broken = "©".dup.force_encoding("US-ASCII")
p(broken.inspect)
p(:"ê".inspect)
p(:"ê".inspect.encoding)