以前は PHP で書きましたが、今回は Ruby で書きました。
Ruby 初心者だから、超恥ずかしいコードなのかも><
とりあえず晒します。
class String def zen_length(kcode = 'u') require 'jcode' tmp = $KCODE $KCODE = kcode cnt = 0.0 self.each_char { |c| cnt += c.mbchar? ? 1.0 : 0.5 } $KCODE = tmp cnt end end print 'あいうえお123'.zen_length # => 6.5
utf-8 だと半角カナは 1 文字扱い。