カテゴリ:未分類( 2 )
Cygwin + gccの文字コードについて
Cygwinのgccを使用する際の文字コードについて説明する。

CP932のソースファイルをコンパイルする際は--input-charsetオプションを使用する

test.cがcp932で保存してある

gcc --input-charset=cp932 test.c


実行時の文字コードを変更する場合は--exec-charsetオプションを使用する
具体的な例を示す

unsigned char *s ="あ";
printf("%02x ", *s);
printf("%02x ", *(s+1));
printf("%02x \n", *(s+2));


exec-charsetを使用しないでコンパイルした場合以下のようになる。

e3 81 82


これはデフォルトのUTF-8の文字コードをあらわす
ではexec-charsetを使用してみよう。


gcc --input-charset=cp932 --exec-charset=cp932 test.c


この場合、CP932の文字コードとなる。

82 a0 00


コマンドライン引数のエンコード
環境変数のLANGが適切に指定されていないと、コマンドライン引数を正常に取得できない場合がある。
たとえばCygwinのgccで作成したアプリケーションがあったとする

これをコマンドプロンプトで以下のように実行したとしよう

a.exe "ああああ"


コマンドライン引数である、argv[1]の値はああああとならなければならない。
しかし、実際には"ああああ"となってしまう。
ほんらい排除されるダブルクォーテーションが混ざってしまうのだ。

これはコマンドライン引数が正常に解析できていないため発生する。

これを回避するにはLANGの環境変数を指定する必要がある。

set LANG=ja_JP.cp932


本来Windowsの環境変数は大文字小文字は関係ない。
しかし、Cygwinのgccでコンパイルしタ場合、LANGはすべて大文字でなければならない。
[PR]
by mima_ita | 2013-09-19 01:02
やる夫が管理職になるようです 1
なんか、新年度も始まったしソフトウェア会社で磨いた管理テクニックを疲労するお!

ただし、作者は会社員でいられなくなっちゃった(・ω<)テヘペロなので、そのへんを差し引いて読むといいと思うお!


          ____       
       / \  /\  キリッ  偽装請負の会社で働いてはや5年
.     / (ー)  (ー)\   やる夫も管理職になって
    /   ⌒(__人__)⌒ \     部下ができたお!
    |      |r┬-|    |  
     \     `ー'´   /
    ノ            \  
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


More
[PR]
by mima_ita | 2012-04-03 18:22



実験ですお
検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ