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
リモートデスクトップに繋がらない with COMODO Firewall

COMODO Firewall を入れたWindows 7に、リモートデスクトッ …

no image
コンピュータ名でアクセスできるがIPでアクセスできない@Windows ファイル共有

タイトルのような事象がWindows のファイルの共有で発生しました。 コンピュ …

no image
KVMを使ってみる@CentOS 5.4

RHEL 5.4からKVMが使えるようになり、それに伴いCentOS 5.4でも …

no image
Windows bash (win-bash)のプロセスのfork性能を測ってみた

Windows上では今までCygwinを使っていたのですが、Cygwinはプロセ …

no image
Windowsで空のイメージファイル作成@WindowsXP

Linux上でのddコマンドのように、Windows上で空のファイルを作成する方 …

no image
isoなどのCDイメージを手軽にマウント

Daemon ToolsというCDのイメージをマウントする有名なツールがあるので …

no image
WordPressのページ管理画面でページ番号を出力する

WordPressのページ機能で静的なページを作成しているとき、ページの順序を変 …

no image
電源ボタンを押して休止状態(ハイバネート)にする@Fedora 14

電源ボタンを押すと、デフォルトではシャットダウンプロセスが走りますが、休止(hi …

no image
Windowsの管理機能を集約@Windows 7

Windows 7でフォルダ名に特殊名をつけると、コントロールパネルのよう、いや …

no image
qcow2のディスクイメージをマウントして編集する@Ubuntu12.04

KVMなどで使われているqcow2形式のディスクイメージは、単純なディスクイメー …