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
Ctrl-Sの端末ロックを無効にする

bashではCtrl-Sを入力してしまうと端末がロックされた状態になり何も受け付 …

no image
OpenSSL, OpenSSH脆弱性@Debian

Debian etch以降のOpenSSL, OpenSSHで大きな脆弱性が発見 …

no image
VMware 2.0 を専用クライアントで使う (msiからファイルの抽出)

VMware 2.0 は基本的にWebインタフェースしか使えないと思っていました …

no image
linuxのSWAPパーティッションにUUIDを指定する

ext3とかext4のパーティッションはtune2fsでUUIDを指定できますが …

no image
Date型@EntityBean

EntityBeanからDate型にマッピングしたデータを取り出した場合、jav …

no image
rpmが削除できない@CentOS 5.2

rpm -e でパッケージ削除中に誤ってCtrl-Cを押してしまい、中途半端に削 …

no image
DLNAサーバ TVersity

PS3はDLNAクライアント機能があるため、ネットワーク上にある音楽や動画を再生 …

no image
systemdやsystemctlコマンドを少し調べてみた

systemd が使いにくいので避けていたのですが、やっとFedora 15 を …

no image
簡単バックアップシェル

サーバ管理していると、ちょっとしたデータを定期的にバックアップしたいことがありま …

no image
googleマップが凄い!!

とうとうgoogleマップのストリートビュー(street view)の日本版が …