-
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