BOM なしで UTF-8 でエンコードされた xml ファイルがあります。16 進エディタでは、次のようになります。3c 3f 78 6d
xml ファイルをバッファリングし、先頭に BOM を追加します。
char* BufferEncoder = (char*)malloc(3);
memset(BufferEncoder, 0, size);
for(int i=0;i<3;i++) BufferEncoder[i] ^= 0xaa;
BufferEncoder[0]=(char)0xef;
BufferEncoder[1]=(char)0xbb;
BufferEncoder[2]=(char)0xbf;
// concatenate into a new Buffer containing old xml and the BOM
次に、次のコード行を使用して、BOM 付きの UTF-8 から ISO 8859-1 に変換しようとしました。
int size = WideCharToMultiByte(28591 /*ISO-8859-1*/, 0, pBuffer, -1, NULL, 0, NULL, 0);
if (size>0)
{
char* pBuffer2 = (char*)malloc(size);
memset(pBuffer2, 0, sizeNew);
WideCharToMultiByte(28591, 0,pBuffer,-1, pBuffer2, size, NULL, 0);
// .........
このコードはまだテストされていません。これが最善の解決策だと思いますか? どんなアイデアやアドバイスも大歓迎です。前もって感謝します。