- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Ruby

はじめに Edit

Rubyとテキストエディタxyzzy関連の話

メニュー Edit

Rubyのソースにencoding: UTF-8と書くとUTF-8NではなくUTF-8で開かれてしまう件 Edit

  1. Ruby1.8.7で動かしたいスクリプトがあるが、Ruby 1.9を考慮して文字コードを指定しようと、
    #!/usr/bin/env ruby
    #-*- encoding: UTF-8 -*-
    $KCODE='u'
     :
    
    などとRubyで記述するソースファイルに書く
  2. xyzzyで上記ソースを開く
  3. 何か書いて保存し、Rubyで実行しようとするも1行目からエラーがでて実行できない
    test.rb:1:undefined local variable or method `(何か文字化け)' for main:Object (NameError)
    
    原因:RubyはUTF-8Nを想定しているが、xyzzyによりUTF-8NではなくUTF-8で保存されている
  4. とても困る

暫定的な対処法その1 Edit

.xyzzyに以下を追加して、xyzzyを再起動する

(setf (gethash "utf-8" *mime-charset-name-hash-table*) *encoding-utf8n*)

これで、xyzzyが"#-*- encoding: UTF-8 -*-"を検出した場合でも、UTF-8Nとして読まれるし、Rubyスクリプトも正しく実行できる。

問題は、同様の状況でRuby以外でもUTF-8がUTF-8Nとして認識されてしまう点。

※ruby-modeで

1
2
3
4
(add-hook '*ruby-mode-hook*
          #'(lambda ()
              (setf (gethash "utf-8" *mime-charset-name-hash-table*) *encoding-utf8n*)
              ))

してもグルーバルに作用されて駄目っぽい

参考サイト Edit


No comment. Comments/Ruby/xyzzyエディタ?

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2010-08-04 Wed 10:53:19 JST (3419d)