Printf文で英語は正しく表示されますが日本語では文字バケが起こります。どうすれが良いですか?

受信側の設定の問題だと思われます。
あくまでも送る側は日本語の2バイトを1バイト単位で送りますので受信側の文字コードの設定に注意が必要です。 但し, 日本語表示には種類も多く2バイトコードで成り立っていますので正確に受信する為には文字コードに対しての知識が必要です。 また, 組み込み機器単独で日本語フォントを表示させるためにはフォントメモリが必要となります。

以下の画面を参照して下さい。
受信側にはRealTermを用いて表示を確認しています。
Terminal FontをMSゴシックに設定しており。PICから送られた日本語が表示されることが確認出来ます。