• 締切済み

太郎を太と郎に分ける方法。

こんにちわ。 名前の占いをしたくて、文字を1文字1文字分解したいと思っています。(姓名判断?!) それで、 $name="$in{'message'}";#太郎など $n01=substr($name,0,2);#太 $n02=substr($name,1,1);#郎 #格納されている文字列を表示 print "$name"; print "<br>"; print "$n01"; print "<br>"; print "$n02"; としたのですが、実行結果は 太郎 太 セ となりました。 まあ、文字を使うのに、 $n01=substr($name,0,2);#太 $n02=substr($name,1,1);#郎 というのはおかしいのでしょうか? というわけで、文字を分割したいのですが、何か手段はありますでしょうか? ちなみにフォームから送られてくる情報は太郎といった状態で、間に/等の文字列は入っていません。 よろしくお願いします。

みんなの回答

  • umota
  • ベストアンサー率46% (150/324)
回答No.3

訂正 正 文字エンコード 誤 文字コード

  • umota
  • ベストアンサー率46% (150/324)
回答No.2

スクリプト言語と文字コードが不明なので答えられません。 全角一文字 = 2バイト とは限りません。 # php ならば mb_substr を使う

xphp
質問者

お礼

CGI作成で言語?はperlです。文字コードはshift-jisです。 phpではないのですが、ありがとうございました。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

>>$n01=substr($name,0,2);#太 >>$n02=substr($name,1,1);#郎 substr関数の仕様を読んでみよう。 確か、「バイト数」じゃね?

xphp
質問者

お礼

バイト数のようですね。しかも全部2バイト?とは限らないみたいで。。。どうもありがとうございました。

関連するQ&A