電子書籍の厳選無料作品が豊富!

RedHatLinux7.3(2.96-110)、gccバージョン(2.96 20000731)にて、
C言語のアプリケーションを初めて作成しています。

そのアプリ内でテキストファイル(日本語あり)を
作成するのですが、どうも期待どおりの結果になりません。
というのも、出来上がったファイルの文字コードが、
EUCではなくShift-JISになってしまっています。
Linuxで作成したアプリをLinuxで実行するのですから、
出来上がるファイルの文字コードはEUCになるはずですよね?

ちなみに、文字コードの確認は「kcc -c XXXXX.log」でおこないました。
もしかして「アプリケーションログを日本語出力する」
なんていうことが、そもそもの過ちなんでしょうか?

ファイル出力には、fopen+fprintfを使っています。
どうしてこのような結果になってしまうのか、ご存知のかた、よろしくお願いします。

A 回答 (4件)

リダイレクトしたファイルがEUCになっているかどうか以下の方法で確認してみてください。


コンソールの場合は、まず、konと入力し、漢字が表示できるようにしてください。その後で、
1.emacs ファイル名 
と入力し、漢字が表示されると、左下にEEEが表示されれば
EUC、EESの場合はシフトJISです。
2.cat ファイル名
で正しく漢字が表示されれば、EUCです。

この回答への補足

回答ありがとうございました。
emacsでは-S、catでは文字化けした状態でした。これはやっぱりShiftJISですね。
でも、今やっと、うまくいきました!
結論から言いますと、ソースファイルのいくつかが正常にEUC変換できていなかったみたいです。
すべてのソースファイルのEUC変換をやり直して実行してみましたら、ログファイルは正常にEUCで出力されているようです。
emacsで-E、catで正常に表示されていますので間違いないですよね?
本当にいろいろありがとうございました。

補足日時:2003/08/20 10:21
    • good
    • 0

nkf のバグというか文字コードの欠陥なんですが


シフトJISのX0201仮名とEUCが判別できない事があります。

なので入力が必ず シフトJIS と分かっている場合は

nkf -S -e xxx.c > yyy.c

としてみたら如何でしょうか。

また、FTP クライアントにも文字コード変換機能くらい
付いているのが普通だと思います
一部ファイルは EUC で一部ファイルが シフトJIS のような
混乱を避けるためにも、 FTP クライアントでアップする際に
一緒に変換するのが無難だと思います。

この回答への補足

回答ありがとうございます。
nkfのヘルプを見直しました。そういうオプションがあったなんて、ぜんぜん気づきませんでした。
また、FTPソフトも設定を見直そうと思います。

補足日時:2003/08/20 10:54
    • good
    • 0

nkfを使用したそうですが、nkf -e xxx.c と入力しただけでは、xxx.cはEUCコードに変換されません。


nkf -e xxx.c > yyy.cと入力してください。
yyy.cがEUCコードに変換されたファイルです。

この回答への補足

回答ありがとうございます。
さきほどの補足にて記述が不足しておりました。
ご指摘のとおり、「nkf -e xxx.c > yyy.c」でリダイレクトはしてあります。すみませんでした。(+_+)
EUC変換に失敗しているのかしら・・・?でも失敗してたらリダイレクト結果も文字化けしてますよね。

補足日時:2003/08/19 21:56
    • good
    • 0

その日本語の出所はどこなんでしょう?


出所に問題有りです。

ソースコード中? (ソースの文字コード確認)
外から読み取る? (読み取り元データの文字コード確認)

fprintfの%sは'\0'で文字列終端を探知するのみ。
それ以外は何も考えません。

この回答への補足

回答ありがとございます。
えぇっと、Windowsでソースを作成してLinuxにFTPして、「nkf -e」でEUCに変換しましたのでEUCのつもりです。
このままではEUCに変換なってないんでしょうか?(-_-;)
またよろしくお願いします。

補足日時:2003/08/19 19:44
    • good
    • 0

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