プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

gccコマンドは、cygwinに付属していたものを使っています。
fopen関数でファイルを出力用にオープンし、fputs関数などで、何かしらの文字を書き込むCソースファイルを作成したとします。
このCソースファイルから、実行ファイルをビルドする際、
gccコマンドをオプション無しで使って実行ファイルをビルドし、その実行ファイルを実行すると、エンコーディングが"BOM無し"のUTF-8である出力ファイルが作成されます。
ですがこれだと、Emacsなどで開いた時に、バッファのコーディングシステムがraw-textになって、文字がきちんと表示されません。
gccコマンドには、ビルドされた実行ファイルが、エンコーディングが"BOM付き"のUTF-8であるファイルを出力するように指定する、オプションはありますでしょうか?
今回、ググっても1つも手掛かりが見つからなかったので、質問させて頂きましたので、
gccに詳しい方、是非よろしくお願い致します。

A 回答 (3件)

この場合ファイルの入出力はcygwinのライブラリがやってるのでgcc関係ありませんが。


それにBOM付きにするとgccを含めたcygwinが提供するコマンドが対応してなさそうな気がしますけど。

emacsに関しては設定次第でBOMなしでもutf-8として認識させられるはず。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

>それにBOM付きにするとgccを含めたcygwinが提供するコマンドが対応してなさそうな気がしますけど。

BOMは邪魔になるケースが多いんですね。
知りませんでした。


>emacsに関しては設定次第でBOMなしでもutf-8として認識させられるはず。

確かに、emacsの設定を変える方がよさそうですね。
そちらの路線で考えてみます。

お礼日時:2012/10/27 17:44

gcc自体にはコード変換機能はありませんので、fputsの際の元データがUTF-8だっただけだと思われます。


ちなみに、LANG環境変数は設定されていますでしょうか。
Emacs使いではないので正確な回答は出来ませんが、LANGが正確に設定されていないとvim等も正確に表示出来ないですので・・・。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

LANGの値は、ja_JP.UTF8に設定しているので、環境設定に関しては問題ないと思います。

お礼日時:2012/10/27 23:26

fputs 自体にコード変換機能はありません。


UTF-8で書かれたものを出力したからUTF-8になっただけです。

BOMを出力したれば、明示的にBOMを出力してください。


文字コードは
default-buffer-file-coding-system
とか
file-coding-system-alist
とかでデフォルトの値を決めることもできます。

BOMを必要とするアプリの方が少なく、むしろ邪魔になるアプリも多いので、無理に付ける必要は無いと思います。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

>文字コードは
>default-buffer-file-coding-system
>とか
>file-coding-system-alist
>とかでデフォルトの値を決めることもできます。
>
これらについて調べてみて、試してみます。

お礼日時:2012/10/27 23:21

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