-
Notifications
You must be signed in to change notification settings - Fork 1
Home
miyucy edited this page Sep 13, 2010
·
4 revisions
#!/usr/bin/ruby -wKU
$LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
require 'e4u/encode'
$DEBUG = true
puts '-' * 80
E4U.encode('', :docomo, :sjis => :utf8)
puts '-' * 80
E4U.encode('', :docomo, :utf8 => :sjis)
puts '-' * 80
E4U.encode('', :sjis, :docomo => :kddi)
# >> ----------------------------------------
# >> docomo_cp932_to_docomo_unicode
# >> cp932_to_utf8
# >> docomo_unicode_to_docomo_utf8
# >> ----------------------------------------
# >> docomo_utf8_to_docomo_unicode
# >> utf8_to_cp932
# >> docomo_unicode_to_docomo_cp932
# >> ----------------------------------------
# >> docomo_cp932_to_docomo_unicode
# >> cp932_to_utf8
# >> docomo_unicode_to_google_unicode
# >> google_unicode_to_kddi_unicode
# >> utf8_to_cp932
# >> kddi_unicode_to_kddi_cp932
from == toになるまで、再帰的に呼び出す。
ncr == numeric character reference == 数値文字参照
スペルあってる?
現在の内部コードをunicodeからutf8にしたい。
単純に &#xXXXX; の 8バイトを置換(gsub)するよりも UTF-8(3〜4バイト) を置換するほうが速いでしょ?
こんな感じ
# Google絵文字に相当しない絵文字はテキストにフォールバックする
E4U.encode(str, :google => :docomo, :utf8 => :sjis, :fallback => :text)
# Google絵文字に相当しない絵文字は
# <img src="http://mail.google.com/mail/e/docomo_ne_jp/000" alt="[晴れ]" class="e" />に変換
E4U.encode(str, :google => :docomo, :utf8 => :sjis, :fallback => :gmail)
# Google絵文字に相当しない絵文字は
# <img src="/images/emoticons/sun.gif" alt="[晴れ]" class="e" />に変換
E4U.encode(str, :google => :docomo, :utf8 => :sjis, :fallback => :typecast)
# Google絵文字に相当しない絵文字は
# ご自由に
E4U.encode(str, :google => :docomo, :utf8 => :sjis, :fallback => lambda{|utf8| '' })
http://search.cpan.org/~kawasaki/Encode-JP-Emoji-0.05/lib/Encode/JP/Emoji/FB_EMOJI_TEXT.pm を参考する
デフォルトオプションとか
E4U::Encode.default_fallback = :text
E4U::Encode.default_fallback = lambda{|utf8| ’’}
E4U::Encode.default_converter = :google E4U::Encode.default_converter = :jpmobile class MyConverter < E4U::Encode::Converter::Google end E4U::Encode.default_converter = MyConverter.new
- if define? ::Encoding
- if String.instance_methods.include? ‘encode’
- if ’’.responde_to? :encode
- if RUBY_VERSION > ‘1.8’
どれがいいの? 最近2chであれこれ議論してたけど
duck typing? chicken typing? 俺はstr.encodeしていることを確認したいから responde_to? するぜ?
好みの問題?
MRI19ならEncoding::Windows_31Jがつく(はず)
"-x" はCP932を指定することで暗黙のうちに指定されるのでおk1
JRubyは "-x" 、 "--ic" 、 "--oc" に対応してないけど、無視してくれるのでおk2
NKF.nkf("-m0Sw --ic=CP932 --oc=UTF-8", STRING)
NKF.nkf("-m0sW --ic=UTF-8 --oc=CP932", STRING)
1 いつから? 1.8.6? 1.8.7? むしろ害はないからつける?
2 http://github.com/jruby/jruby/src/org/jruby/RubyNKF.java