dragon spx

文字コードの扱い

WindowsでSJISベースで汲まれた文字表示ルーチンをiOS/Androidで動作させるときに毎度変換が必要になるため、Windowsに依存しない変換方法をメモ。

SJIS ->UTF-8 / UTF-8 -> SJISに変換したい

#include <locale.h>

void TestProg()
{
	char *mbstbl = {
		"あ"	//82a0 SJIS
	};
	wchar_t wcstbl[32] = {
		L"あ",	//4230 UTF-8
	};
	setlocale(LC_ALL, "JPN");

//	wchar_t tblw[32];
//	mbstowcs(tblw, mbstbl, 32);

	//utf-8 -> sjis

	char tblm[32] = {0};
	size_t ret = wcstombs( tblm, wcstbl, 32);

	//tblm = 82a0 ->sjis

	//sjis ->utf16

	wchar_t tblm2[32] = { 0 };
	ret = mbstowcs(tblm2, tblm, 32);

	//4230 sjis ->utf16

	tblm2[0] = 0x00;
	ret = mbstowcs(tblm2, mbstbl, 32);

	//4230 sjis ->utf16

	ret = wcstombs(tblm, tblm2, 32);

	//8xa0 utf16 -> sjis

}