メニュー
Infomation
■お知らせ
[スパム対策]コメントにURLを含めると自動的に削除されます。
■このサイトについて
一応残していますが、全時代の遺物。全ての情報は古く役に立ちません 連絡先:メールアドレス
■日記更新情報
RSSRSS|RSS(本文のみ)|lirs
実験&リサーチ
巡回先
製作環境
 

 



2004|09|10|11|12|
2005|01|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|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|11|12|
2011|01|
2014|05|08|
2017|07|
2018|03|
2020|08|10|
2021|11|

2010年03月26日(Friday) [長年日記]

_ [日記][コンピュータ] Shift_JISをUTF-8に変換するコード(Windows)

Windows(Shift_JIS/マルチバイト環境)で文字コードをUTF-8に変換する方法です。

マルチバイトとUTF-8の変換APIは用意されていないのできっと面倒な事になるんだろうな・・・と予想していたのですが、一旦ワイド文字に変換すれば良いだけでしたね。


今iPhoneアプリを開発中なのですが、Windows環境とも通信するためUTF-8でやることにしましたが、Shift_JISのダメ文字(「表」とか)を気にしなくていいのでUTF-8楽です。

     1 : 	
     2 : 	//UTF8に変換する
     3 : 	void shiftJisToUTF8( char* converted 
     4 : 		,size_t converted_length
     5 : 		,const char* ascii )
     6 : 	{
     7 : 	
     8 : 		size_t sizeBuffer = strlen(ascii) *6;
     9 : 	    LPWSTR  pwszBuf = new wchar_t[sizeBuffer];
    10 : 	
    11 : 	    MultiByteToWideChar(
    12 : 	        CP_ACP,    
    13 : 	        0,   
    14 : 	        ascii,    
    15 : 	        -1,   
    16 : 	        pwszBuf,  
    17 : 	        (int)sizeBuffer); 
    18 : 	
    19 : 	
    20 : 	    WideCharToMultiByte(
    21 : 	        CP_UTF8,
    22 : 	        0,
    23 : 	        pwszBuf,
    24 : 	        -1,
    25 : 	        converted,
    26 : 			(int)converted_length,
    27 : 	        NULL,
    28 : 	        NULL);
    29 : 	
    30 : 		delete[] pwszBuf;
    31 : 	    return;
    32 : 	}
    33 : 	
    34 : 	//ShiftJisに変換する
    35 : 	void UTF8ToShiftJIS( char* converted 
    36 : 		,size_t converted_length
    37 : 		,const char* ascii )
    38 : 	{
    39 : 	
    40 : 		size_t sizeBuffer = strlen(ascii) *6;
    41 : 	    LPWSTR  pwszBuf = new wchar_t[sizeBuffer];
    42 : 	
    43 : 	    MultiByteToWideChar(
    44 : 	        CP_UTF8,    
    45 : 	        0,   
    46 : 	        ascii,    
    47 : 	        -1,   
    48 : 	        pwszBuf,  
    49 : 	        (int)sizeBuffer); 
    50 : 	
    51 : 	
    52 : 	    WideCharToMultiByte(
    53 : 	        CP_ACP,
    54 : 	        0,
    55 : 	        pwszBuf,
    56 : 	        -1,
    57 : 	        converted,
    58 : 			(int)converted_length,
    59 : 	        NULL,
    60 : 	        NULL);
    61 : 	
    62 : 		delete[] pwszBuf;
    63 : 	    
    64 : 	    return;
    65 : 	}

最近のコメント

364,000 at 2008.06.14
Copyright (c) Suika KNOnline.NET