- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-06-13T03:14:32+00:00","","")
#author("2018-06-13T03:20:41+00:00","","")
[[dragon spx]]
*文字コードの扱い [#y9d86858]
*文字コードを自由に変換したい [#y9d86858]
WindowsでSJISベースで汲まれた文字表示ルーチンをiOS/Androidで動作させるときに毎度変換が必要になるため、Windowsに依存しない変換方法をメモ。
***SJIS ->UTF-8 / UTF-8 -> SJISに変換したい [#t2f4c930]
test.cpp(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
}
**setlocaleに注意 [#wef4af52]
mbstowcs / wcstombsは事前にどこの地域であるかを設定するsetlocaleをしておかないと変換に失敗するので注意。
setlocale(LC_ALL, "JPN"); //←日本に設定
LC_ALLは地域設定に含まれる、言語や時間などを全部変更する。
言語だけならLANG、時間ならLC_TIMEなどで個別の指定も可能。