Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |

2016-01-05(Tue)

MSYS2環境のgccで作成したexeでの日本語表示

忘れそうなのでメモ環境は、MSYS2Win64 Shell(MSYS2 Shellではない)上のgcc場合

  • 予め.bashrcに環境変数LC_ALLを設定しておく。
export LC_ALL=ja_JP
#include <stdio.h>
#include <locale.h>
#include <wchar.h>

int main(int argc, char *argv[]){

	setlocale(LC_ALL, "");
	wchar_t c[] = L"あaい";
	wprintf(L"%4lx  %lc\n", c[0],c[0]); // 3042  あ
	wprintf(L"%4lx  %lc\n", c[1],c[1]); //   61  a
	wprintf(L"%4lx  %lc\n", c[2],c[2]); // 3044  い
	wprintf(L"%4lx\n", c[3]);           //    0

	return 0;
}

出力される文字コードは、何故かデフォルトcp932になる。

コンパイルオプション --exec-charset=utf-8 を付けてコンパイルしてもWin64 Shellの文字コードである utf-8出力に変えられないのは謎。

2014-05-18(Sun)

MinGW環境としてRumix2のDevKitを使用する。

Ruby/Tk勉強環境としてインストールしたRumix2は、(選択すると)同時にDevKitがインストールされます。これはrubygemsruby関連のツールをインストールするときにコンパイル必要場合に使用される環境です。DevKit中を覗くとMinGWで使用するツール類がかなり揃っているようで、自分がCやC++勉強に使用する分には充分のようです。

というわけでオリジナルMinGW+MSYSの環境は削除してこちらを使用することにしました。以前MinGWの環境構築時作成したstart.batを以下の様に書き換えました。C:\Rumix2は、Rumix2のインストール先になります

start.bat

@echo off

rem use MinGW on rumix2's devkit

set PATH=C:\rumix2\ruby\devkit-mingw64-32\bin;C:\rumix2\ruby\devkit-mingw64-32\mingw\bin;%PATH%
set C_INCLUDE_PATH=C:\rumix2\ruby\devkit-mingw64-32\include;C:\rumix2\ruby\devkit-mingw64-32\mingw\include
set CPLUS_INCLUDE_PATH=C:\rumix2\ruby\devkit-mingw64-32\include;C:\rumix2\ruby\devkit-mingw64-32\mingw\include
set LIBRARY_PATH=C:\rumix2\ruby\devkit-mingw64-32\lib;C:\rumix2\ruby\devkit-mingw64-32\mingw\lib
set MINGW_DIR=C:\rumix2\ruby\devkit-mingw64-32\mingw

bash -rcfile bash_profile

2012-05-05(Sat)

MinGW gccでSJIS文字を扱う方法

コンパイルオプションとして-finput-charsetと-fexec-charset使えば良いらしい。gccデフォルトutf-8の様です。

ソース

#include <stdio.h>


int main(void)
{
  printf("ソース焼きそば\n");
  return 0;
}

実行結果

~/test$ gcc test.c
test.c: 関数 'main' 内:
test.c:7:10: 警告: 不明なエスケープシーケンス: '\201' [デフォルトで有効]
~/test$ ./a.exe
メ[ス焼きそば
~/test$ gcc test.c -finput-charset=CP932 -fexec-charset=CP932
~/test$ ./a.exe
ソース焼きそば

g++も同様

#include <iostream>
using namespace std;


int main(void)
{
  cout << "ソース焼きそば" << endl;
  return 0;
}

~/test$ g++ test.cpp
test.cpp: 関数 'int main()' 内:
test.cpp:7:11: 警告: 不明なエスケープシーケンス: '\201' [デフォルトで有効]
~/test$ ./a.exe
メ[ス焼きそば
~/test$ g++ test.cpp -finput-charset=CP932 -fexec-charset=CP932
~/test$ ./a.exe
ソース焼きそば