アプリ版:「スタンプのみでお礼する」機能のリリースについて

while($a <=$gyou){
my $string = "$gyouretu[$a][0]";
print OUT substr($string, 0, 1);
$a++;
}

他のところはうまくいっていたのですが、このプログラムを入れた場合、文字化けを起こしてしまいます。UTF8でそろえております。
$gyouretu[$a][0]の文字列の、位置0から1文字、つまり1文字だけを出そうとしています。
現在、substrを使ったシステムの開発を行いたいと思っているため、$gyouretu[$a][0]の1文字だけを出せればよいということではありません。
この文字化けの解決法、わかる方がいましたら教えていただきたいです。
よろしくお願いいたします。

質問者からの補足コメント

  • 返信ありがとうございます。文字化けはこのように出ています。

    「perlについての質問」の補足画像1
      補足日時:2022/10/17 18:55

A 回答 (2件)

具体的にどう「文字化け」が起きているのかがわかれば適切な回答ができるようには思う.



現在の Perl では文字 (列) を表すときに内部的には Unicode を使っていて, substr なんかもこの「文字列」に対して働く. だから, 外部とのやりとりをするには Encoding::encode, Encoding::decode を使って内部表現と外部表現とを変換する必要がある.

なお utf8 プラグマはほとんど無関係.
    • good
    • 1
この回答へのお礼

問題解決しました!
ありがとうございました!!

お礼日時:2022/10/24 17:05
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!