sqlite3 は多バイトコードは utf-8 しか使えないが、Windows のコマンドプロンプトでは sjis しか使うことができない。chcp で表示文字コードの変更はできるが、入力はできなくなる。そこで、utf-8 で入力も表示もできるコマンドプロンプト utf8com.rb を作ってみた。
ruby utf8com.rb を起動すると、コマンドプロンプトで、 utf8> sqlite3 ubin.db "select * from zipcode where cho = '中町' ” のような検索ができる。(日本語入力との時は普通のコマンドプロンプトのように Alt + [半/全] キーを押す。) ファイル名: utf8com.rb (eval は半角英数に変換) require 'kconv' require 'readline' include Readline loop do line = readline('utf8> ', true).toutf8 break if line == 'exit' output = eval('`' + line + '`').tosjis puts output end 残念ながら、このプログラムは問題点が多く実用にはならない。ちょっと動かしただけでも下のような問題が見つかった。 1.cd コマンドが使えない 2.ディレクトリを階層的に表示するとエラーになる。 3.’玉川’の変換ができない。"select * from zipcode where cho = '玉川'" がエラーになってしまう。 上の問題は、入力した文字列を utf-8 に変換して eval で実行する部分で起きている。sjis を utf-8 に変換しても、ascii 部分のコードは変わらないから動くだろうという発想だが、そうは問屋が卸さないらしい。 ちょっと業腹だが、入力文字の変換をあきらめた次のコードなら、utf-8 の文書も表示だけはきっちりやってくれる。 require 'kconv' require 'readline' include Readline loop do line = readline('utf8> ', true) break if line == 'exit' output = eval('`' + line + '`').tosjis puts output end
by tnomura9
| 2008-10-11 22:58
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||