tmytさん、情報ありがとうございました。
ZeroMemory(szWBuf, sizeof(szWBuf)); ZeroMemory(szMbBuf, sizeof(szMbBuf)); wsprintf(szWBuf, KML_DATA, data[i].dblLongitude, data[i].dblLatitude); //dwLen = wcstombs(NULL, szWBuf, 0); //wcstombs(szMbBuf, szWBuf, dwLen); dwLen = WideCharToMultiByte(CP_UTF8, 0, szWBuf, -1, szMbBuf, sizeof(szMbBuf), NULL, NULL); WriteFile(hKMLFile, szMbBuf, dwLen - 1, NULL, NULL);
ただ、WideCharToMultiByte()の仕様なのか 出力文字列にANK文字(?)が含まれていないとCP_UTF8を指定してもシフトJISで出力されるようです。
今回はコメントに日本語を含めることで無事にUTF-8になりました。
また、WideCharToMultiByte()は変換したバイト数を返しますが これには終端ヌル文字も含まれているので WriteFile()に渡すときは -1しましょう。
未だにこんな事に引っ掛かるのは私だけかもしれませんが、Google Earthですら読み込んでくれなくなって しばらく悩みました。
ともあれ無事にGoogle Earth、Googleマップで読み込めるようになりました。
今のところ GPSを使えば それっぽい線が描かれているのですが、W-SIMだとあまり綺麗な線にならないので もう少し見せ方を考える必要がありそうです。
0 件のコメント:
コメントを投稿