gccでコンパイルしたときの文字化け対策(2)

gccで表示する文字の文字化け対策です。
gccでコンパイルする人以外は参考にならないと思います。
 
 
文字コードsjisのソースファイルに含まれる、「ソ」・「表」などが文字化けしてしまう症状が出ました。
“表示ソフト”と表示するソースファイルを、gccでコンパイルすると「warning: unknown escape sequence:」と警告が出ますが、コンパイルは成功しています。
生成した実行ファイルを実行すると、文字化けしてしまい読み取ることができません。
 
文字化けする原因としてはgcc特有のもので、ソースコードに含まれる一部の2バイト文字に対応していないとのことです。
今回の場合ですと、sjisの「ソ」は16進数で「83 5c」で表されるので、「5c」の部分をエスケープシーケンスの「\」として解釈されてしまうたため、未知のエスケープシーケンスが含まれますと警告が出るようです。
同じように、「表」「貼」「能」「予」「禄」等もsjisの文字コードに「5c」が含まれるので文字化けします。
 
 
文字コードsjisを使用する場合、2バイト目にエスケープシーケンスと同じ値が含まれる場合は、入力した文字の後ろに「\」を入れることで正常に表示することができます。
 

“表示ソフト”と表示したい場合は、”表\示ソ\フト”と入力する。
 
「\」を入れることで、コンパイル時に警告が出なくなり、文字化けせずに表示できるようになります。
 
 
この問題は、gccでコンパイルする上では避けようがないもののようです。
 
 

gccでコンパイルしたときの文字化け対策

C言語で記述したソースファイルをgccでコンパイルした実行ファイルを実行すると日本語が文字化けしてしまい表示が読めなくなってしまう。
 
文字化けが発生する原因としては、使用しているターミナル(terminal)の文字コードとソースファイルの文字コードが一致していない場合発生することが多いそうです。
 
文字化けしない対策として、ソースファイルの文字コードを「sjis」にしたところgccでコンパイルした実行ファイルで文字化けが直りました。
 
 
今まで文字コードをあまり気にしませんでしたが、gccを使用する上では気をつけないとならないみたいです。
VC++はテキストエディタが統合されているので気にしなくても問題がなかったのかも・・・