質問: 0 ;$i < mb_strlen($file);$i++){ print mb_substr($file,$i,1); printf("0x%x", ord(mb_substr($file,$i,1))); //この辺りで処理すべきかと思うのですが。。。。 } print "\n"; } closedir($dh); } } ```
回答: 記載例で言うと、`$file`に対し、`iconv`関数で`UTF-8`文字列に変換するとよいかと思います。 ``` 例 while (($file = readdir($dh)) !== false) { $file_utf8 = iconv("UTF-8-MAC", "UTF-8", $file) print $file_utf8 ... } ``` 検索すると見つけられると思いますが、MacOSのファイルシステム(HFS+)では、濁音文字を 通常文字と濁点の2つにして扱うらしいです。 そのエンコーディングが「`UTF-8-MAC`」で表されるので、それを処理したいエンコーディング (例の場合「`UTF-8`」)に変換すればよいかと思います。