Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
![Rubyのエンコーディング](https://cdn-ak-scissors.b.st-hatena.com/image/square/87ceb4f081aec031464bf1d334c2c07dace16b78/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fruby-nseg30-120825014746-phpapp02-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
Ruby 1.9 から文字列や正規表現オブジェクトはそれぞれエンコーディング(いわゆる文字コード)を保持するようになりました。 たとえば 0xB1 0xB2 という2バイトは EUC-JP エンコーディングでは「渦」、SHIFT_JIS エンコーディングでは「アイ」という文字になります。つまり同じバイト列でもエンコーディングが異なれば異なる文字として解釈されます。 1.8 では文字列はただのバイト列でした。なので、それがどのような文字を表しているのか、つまりエンコーディングが何なのかはプログラムが知っている必要がありました。 1.9 では文字列オブジェクト自身が自分が何のエンコーディングかを知っています。同じ 0xB1 0xB2 というバイト列でも、それが EUC-JP の「渦」なのか SHIFT_JIS の「アイ」なのかは、文字列自身が知っています。 スクリプトエンコーディング スクリプ
そこらへんで拾ってきたHTMLをNokogiriに渡すと,文字化けすることがあって,困ってた. Nokogiriに文字コードを渡せるので,HTMLから正規表現でcharsetを取り出して,一番多く出現するcharsetをそのページのcharsetとして採用すると,うまくいった. ヒューリスティックにやってるだけだけど,だいたいうまくいく. こんな感じ. charset = io.scan(/charset="?([^\s"]*)/i).flatten.inject(Hash.new{0}){|a, b| a[b]+=1 a }.to_a.sort_by{|a| a[1] }.reverse.first[0] before "〓\u0082«〓\u0083¼〓\u0083\u0089〓\u0083\u0095〓\u0082〓〓\u0082〓〓\u0083\u0088!! 〓\u0083´〓\
ruby、特にruby on railsで画像をアップロードし、アップロードされたファイルをbase64エンコードした後にrmagickで処理してdbに格納するような処理を必要とすることがあります。 エンコードする部分のコードは、以下のようになります。 # ruby 1.8.7のみで動作する書き方 data = Base64.b64encode(file || self.attachment.data)ところが、上のような書き方のまま、ruby-1.9.1の環境で動かすと、エラーになります。 そこで、Base64のdocumentにあるように、以下のような書き方に変更します。 # ruby 1.9.1でもruby 1.8.7でも動作する書き方 data = Base64.encode64(file || self.attachment.data)これで、Base64エンコードがruby 1
Vim エディターのスクリプトの作成: 第 2 回 ユーザー定義関数 を読みながら見よう見まねで書いてみた。 ujihisa さんのコメントを受けてちょっと修正。 ~/.vim/ftplugin/ruby.vim function! MagicComment() return "# -*- coding: utf-8 -*-\<CR>" endfunction inoreabbrev <buffer> ## <C-R>=MagicComment()<CR> 挿入モードで ## を入力すると展開される。escのとこはspaceやcrでもいいみたい。 utf-8 のところを Vim の変数に置き換えればきっと汎用性があるんだろうけど知らん。 あと、新規 *.rb ファイルを開いた時に自動展開されると便利なのじゃろうがわからんちん。とか書いていたら、kumonopanyaさんがやり方を教えてくれ
Mac でも快適に vim7 が使えるようになり,vim7 からは unicode サポートが改善されているとのことなので,これを機に vim のデフォルト文字コードを UTF-8 にしてみた. vim の文字コード設定は少し複雑で,たまに間違って解説しているページも見かけるので,以下にまとめてみよう. まず文字コード設定に関係するオプションは, 'encoding' (短縮名 'enc') 'fileencoding' (短縮名 'fenc') 'fileencodings' (短縮名 'fencs') の3つ.fenc と fencs は名前が紛らわしすぎるので注意. vim は 'enc' で指定された文字コードをデフォルトとし,ファイルを開く時に 'fencs' で指定された文字コードから順番に 'enc' の文字コードへ変換を試み,成功したところでやめる,全部失敗したら変換せずに
という2chのスレがかなり勉強になったのでまとめ。 少しでも有用だと思ったものは載せてあるので結構長いです。 Unicodeのような文字集合(符号化文字集合?)やUTF-8のようなエンコーディング方式に限らず色んな文字コードにまつわる話があります。 たびたび話が繰り替えされますがそれは確認ということで。 (元スレ) 追記:簡単にまとめました。 1 :デフォルトの名無しさん:2007/04/30(月) 20:02:37 ビッグインディアンとかなんとかかんとか 3 :デフォルトの名無しさん:2007/04/30(月) 20:05:48 また、頭の悪そうなスレが・・・ >>1 それは魚とマグロの違いを訊ねるようなもんだ。 4 :デフォルトの名無しさん:2007/04/30(月) 20:06:49 魚と鮪というよりは、魚と刺身の違いのような気がする。 5 :デフォルトの名無しさん:2007/04/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く