wprintf()wchar_t文字列を引数として取り、指定されたロケール文字エンコーディングで文字列を出力します。
printf()しかし、UTF-8 文字列を使用して渡すと、指定されたロケール文字エンコーディングに関係なく、UTF-8 文字列が常に出力されることに気付きました (たとえば、UTF-8 文字列にアラビア文字が含まれていて、ロケールが"C" ("C.UTF-8" ではない) に設定すると、アラビア文字は引き続き印刷されます)。
printf()ロケールを気にしないのは正しいですか?