Ruby:如何在命令行中指定文件的字符编码(-Eex [:in]选项)?

时间:2013-02-27 19:45:03

标签: ruby ruby-1.9

我无法设置文件的编码,一直出现错误。我已经尝试了所有方法:

C:\ruby\sbox>ruby -W3 -Eex=utf-8 gserver.rb text.txt
ruby: unknown encoding name - ex=utf-8 (RuntimeError)

C:\ruby\sbox>ruby -W3 -Eex=utf8 gserver.rb text.txt
ruby: unknown encoding name - ex=utf8 (RuntimeError)

C:\ruby\sbox>ruby -W3 -Eex:utf8 gserver.rb text.txt
ruby: unknown encoding name - ex (RuntimeError)

C:\ruby\sbox>ruby -W3 -Eex=>utf8 gserver.rb text.txt
ruby: unknown encoding name - ex= (RuntimeError)

C:\ruby\sbox>ruby -W3 -Eex=>utf-8 gserver.rb text.txt
ruby: unknown encoding name - ex= (RuntimeError)

C:\ruby\sbox>ruby -W3 -Eexutf-8 gserver.rb text.txt
ruby: unknown encoding name - exutf-8 (RuntimeError)

C:\ruby\sbox>ruby -W3 -Eex"utf-8" gserver.rb text.txt
ruby: unknown encoding name - exutf-8 (RuntimeError)

C:\ruby\sbox>ruby -W3 -Eex="utf-8" gserver.rb text.txt
ruby: unknown encoding name - ex=utf-8 (RuntimeError)

如何设置此选项?

This reference没有-Eex选项。

UPD:

我已经学会了。无需打印ex。只需-Eutf-8:cp866

C:\ruby\sbox>ruby -W3 -Eutf-8:cp866 gserver.rb text.txt

2 个答案:

答案 0 :(得分:2)

尝试添加“魔术评论”'位于文件顶部:

# encoding: UTF-8

答案 1 :(得分:2)

还有-K选项,对我来说似乎比-E选项更好。它将设置内部(脚本)和外部编码。 ruby(1)手册页指出:

  -K kcode
          Specifies KANJI (Japanese) encoding. The default value for
          script encodings ("__ENCODING__") and external encodings
          ("Encoding.default_external") will be the specified one.  kcode
          can be one of

   e      EUC-JP


   s      Windows-31J (CP932)


   u      UTF-8


   n      ASCII-8BIT (BINARY)

要运行我的wiki,我使用:

$ ruby -Ku wiki.rb

我的ruby wiki源文件都是ASCII,但有时当我从网上复制并粘贴到我的wiki时,有些字符是UTF-8。如果不设置-K选项,我会得到" ArgumentError - US-ASCII中的无效字节序列"对于我wiki的某些页面。

但是

$ ruby -Eutf-8 wiki.rb

也有效。