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
EJB3 JPAのmapping-type @ JBoss 4.2

JBoss 4.2 でEJB3のJPA (JAVA Persistence AP …

no image
vim-rubyのインストール@cygwin

昨日はDebian上でのvim-rubyインストールについて書いたが、今回はcy …

no image
NICのデバイス名が変わった時の対処 @ RHEL6

RHEL6のKVMイメージをコピーして、同じ環境を作ろうとしたところ、eth? …

no image
VMware Player 3.0 でのネットワーク設定

VMware Player 3.0 にはネットワーク設定の画面がついていないので …

no image
Cygwinでscreenコマンドが使えなくなる@Windows 10

Windows 10 上のCygwin (64bit版使用)で、screen コ …

no image
viで制御コードの入力

.vimrcといった設定ファイルを書いていると、制御コードを入力したいときがあり …

no image
Windows XPのディスクアクセスがうるさいので自動デフラグを無効にする

今更ですが、Windows XP を使っていると、ディスクがカリカリとうるさいな …

no image
firefox アドオン セカンドサーチが動作しない@Firefox 3

いつ頃からかFirefoxのアドオン、セカンドサーチが機能しなくなってしまいまし …

no image
ドメイン名一覧をドメイン毎にソート(文字列の反転)@bash

Webページのアクセス解析をドメイン毎に集計してみようと思って、IPを抜き出しホ …

no image
ゲストOSの時刻同期@VMware + adjtimeでの調整

Windows上のVMware ServerでゲストOSとしてLinux (De …