LLでのマルチバイト文字の文字数の取得

以下のような方法でそれぞれ文字数を求めると、日本語文字列の文字数がうまく取得できません。

Ruby

"English".length #7文字
"日本語".length #6文字になる

Python

len("English") #7文字
len("日本語") #6文字になる

PHP

strlen("English"); //7文字
strlen("日本語"); //6文字になる

上記のようになるのは、RubyPythonPHPでは文字列をバイト列で扱っているためです。
それぞれ、以下のように書くことでマルチバイト文字でも文字数を取得することができます。

Ruby

"日本語".split(//s).length #3文字で正しい

Python

len(u"日本語") #3文字で正しい

PHP

PHPは拡張モジュールのmbstringが必要です。

mb_strlen("日本語"); //3文字で正しい

先頭100文字を表示したりするといった処理の時などに、思わぬバグの原因になったりするかもですので注意が必要ですね。
スクリプト言語なら、このあたりは意識しなくても書けるといいのですけどねえ。



追記:
コメントでご指摘がありました。
rubyにはjcodeという日本語を扱うことを意識したStringクラスのメソッドを追加、再定義したものがあるそうです。

require 'jcode'
$KCODE='s'
"日本語".jsize #3文字で正しい。

ちなみにバージョンについての情報を書いていなかったのですが、Rubyは1.8.6、Pythonは2.5.1、PHPは5.2.4です。