I want to tell ruby that everything is utf8, except when stated otherwise, so I dont have to place these # encoding: utf-8 comments everywhere.
3 Answers
You can either:
- set your RUBYOPT environment variable to "-E utf-8"
- or use https://github.com/m-ryan/magic_encoding
3 Comments
grosser
#1 is not very portable, and #2 is not very nice, but it is at least automatic :)
Cyril Duchon-Doris
#1 crashes my Ruby keyboard on Windows 10 + Ruby 2.2. ie, as soon as I try to write any accent, the keyboard stops working on the ruby console (except for interrupts).
tommasop
@Cyril Duchon-Doris the answer was for Ruby 1.9 since ruby 2 UTF-8 is the default encoding.
If you're using environment variables, the general way is to use LC_ALL / LANG
Neither is set : fallback to US-ASCII
$ LC_ALL= LANG= ruby -e 'p Encoding.default_external' #<Encoding:US-ASCII> Either is set : that value is used
$ LC_ALL=en_US.UTF-8 LANG= ruby -e 'p Encoding.default_external' #<Encoding:UTF-8> $ LC_ALL= LANG=en_US.UTF-8 ruby -e 'p Encoding.default_external' #<Encoding:UTF-8> Both are set : LC_ALL takes precedence
$ LC_ALL=C LANG=en_US.UTF-8 ruby -e 'p Encoding.default_external' #<Encoding:US-ASCII> $ LC_ALL=en_US.UTF-8 LANG=C ruby -e 'p Encoding.default_external' #<Encoding:UTF-8> 3 Comments
Saurabh Bhatia
This is the correct answer if someone needs to add enconding systemwide.
desbest
What about if I don't have the LC_ALL environment variable on my system. It says that LC_ALL is undefined when I try to use it.
Arne Brasseur
The above examples are shell code, not Ruby code. To check the value of
LC_ALL in Ruby, use ENV['LC_ALL']