FreeBSD QandA 1207

FreeBSD QandA

Q. C言語の printf 文で日本語を表示させようとすると、コンパイル時に
   エラーが出るときがあるんですが(コンパイルできる時もある)。

A. ソースの日本語コードが JISコードになっていませんか?

     % echo 'あいう' | nkf -j | hexdump -c
     0000000 033   $   B   $   "   $   $   $   & 033   (   B  \n       

   でわかるように、JIS コードの「あ」には " というキャラクタコードが
   含まれているため、printf("..") の "" の対応がおかしくなり
   コンパイル時にエラーになります。しかし

     % echo 'ほげほげ' | nkf -j | hexdump -c
     0000000 033   $   B   $   [   $   2   $   [   $   2 033   (   B  \n

   のように、JIS コードには常に " が含まれているわけではないので、
   表示させたい文字によって、エラーになったりならなかったりします。

   EUC だと、日本語部分のコードは ASCII コードとは重ならない値を使うため、
   エラーにはなりませんので、ソースを EUC コードに変換してください。
   変換方法は

    [管理番号 1253]
      Q. ファイルの文字コードを変換したいのですが。

    [管理番号 1289]
      Q. 新規ファイルをエディタで作成したときの、文字コード(JIS、EUCなど)を
         指定したいのですが。

   を参照してください。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。