1バイトずつ読みながら数える
htmlタグ中ならスキップ、文字なら数える
使用する文字コードの知識が必要
例えばsjisなら1バイト文字か2バイト文字かとか
携帯絵文字が入ってたりするとその処理も必要