|
|
// Write the BOM: 0xFEFF | // Write the BOM: 0xFEFF |
unicode_t BOM = 0xFEFF; | unicode_t BOM = 0xFEFF; |
writer.writeChars((const unsigned char*) &BOM, 2); | writer.writeChars((const unsigned char*) &BOM, 2); |
|
// Patch from Spoon : 2004-08-25 14:17 |
|
// http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 |
|
// Wrong code |
|
//for (size_t i = 0; i < size; i += 2) |
|
//{ |
|
// unicode_t ch = (data[i] << 8) | data[i+1]; |
|
// writer.writeChars((const unsigned char*) &ch, 2); |
|
//} |
|
// Right code |
|
unsigned char *pdata = (unsigned char *) data.c_str(); |
for (size_t i = 0; i < size; i += 2) | for (size_t i = 0; i < size; i += 2) |
{ | { |
unicode_t ch = (data[i] << 8) | data[i+1]; |
unicode_t ch = (pdata[i] << 8) | pdata[i+1]; |
writer.writeChars((const unsigned char*) &ch, 2); | writer.writeChars((const unsigned char*) &ch, 2); |
} | } |
|
// End patch |
} | } |
return writer.getCur() - beg; | return writer.getCur() - beg; |
} | } |