Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

rubyの文字コードについて考える

      2013/07/15

rubyでは、1.6以降漢字コードを特別に解釈しなくなったようです。

maznはプラットフォーム間の移植生を高めるために以下のルールにしようと考えています。

  • ソースはUTF-8Nで書く
  • 半角カナは使わない
  • 改行コードはLF (UNIX)   ← これは好みが分かれそう
  • 2バイト文字を扱う為にjcodeを使用
  • 入力文字は全てUTF-8Nに変換
  • 半角カナの入力があった場合はnkfで全角カナに変換する

ということで、定型的な書き方は以下のような感じ。

#!/usr/bin/ruby -Ku
require 'jcode'
require 'kconv'

puts "入力してください'
str = gets().toutf8;
puts str;

utf-8のLinux端末やutf-8を表示できるcygwin/ckを使用していれば問題なく表示できるが、 cygwinデフォルトのDOSプロンプトでは文字化けしてしまいます。ここでputs時に変換するコードを入れるとWindows専用のコードになってしまうし・・・・ どうすればいいんだろ。

rubyのメーリングリスト見てると、文字コードに依存しないような作りを目指しているようなので、このような実装になっているようですが、システムの環境にあわせて入出力する文字コードのデフォルト値を変更できたり、環境変数で設定できればもっと実用的な言語になるのになぁって思います。

なにか良い方法を考えてみた。

rubyのラッパーを作って入出力を変換させる方法やluitのようにターミナル上で翻訳する→便利だが作るのが面倒。(誰か作らない?)

ターミナルを捨てて、Webアプリにして、ブラウザとやりとりする→手軽に使えない・・・

うぅ・・・ やっぱりrubyでも内部処理はUTF-8で統一して入出力変換できるようにして欲しい。

参考 : FAQ:日本語の取り扱い
: Rubylist Magazine

 - IT技術, プログラミング

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
pythonのpipをインストール@cygwin

cygwinのsetuptoolsがインストールされていない場合は、インストール …

no image
ログファイル監視 + イベントスクリプト@ruby

ログファイルを監視して、ある文字列が出力されたらイベントを発生させたかったので、 …

no image
vardiaの地上デジタルが不安定なときは@RD-S601

東芝のVardiaでは、地上デジタルの電波が強すぎて、逆に画面が不安定になること …

no image
Firefox でファイルをダウンロードしようとすると、ダウンロードダイアログが開かない@Windows7 x64 + Firefox 3.5

Firefox でファイルをダウンロードしようとすると、なぜか保存ダイアログが開 …

no image
tailの結果を2回grepすると表示されない@Linux

こんな感じで、grep するとマッチするはずのaaaaがなぜか何も表示されません …

no image
IEのproxy.pac@Windows 7

IE11 から、どうもローカルにあるProxy.pacが読み込まれてないように思 …

no image
シェルで逐一時間表示@bash

デバッグを目的に、 逐一コマンド実行時に時間を表示させたい場合があります。 $ …

no image
vim-rubyインストール@Debian etch

vim-rubyを使うとrubyのプログラム編集で、補完機能を使うことができるら …

no image
リモートデスクトップでPC再起動 or シャットダウン@Windows 7

Windows リモートデスクトップ接続では、通常のスタートメニューから再起動や …

no image
TCP Wrapper の設定チェック@Linux

昔からあるアクセス制限の方法として、TCP Wrapperがあります。 /etc …