我有一个没有 BOM 的 UTF-8 编码的 xml 文件。在十六进制编辑器中,它给出: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);
// .........
此代码尚未经过测试。你认为这是最好的解决方案吗?欢迎任何想法或建议。先感谢您。