Commit f1222fca authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander Trofimov

csv read skip bom

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65325 954022d7-b5bf-4e40-9824-e11837661b57
parent 7e8e07b1
...@@ -117,10 +117,23 @@ namespace CSVReader ...@@ -117,10 +117,23 @@ namespace CSVReader
BYTE* pFileData = new BYTE[oFile.GetFileSize()]; BYTE* pFileData = new BYTE[oFile.GetFileSize()];
oFile.ReadFile(pFileData, oFile.GetFileSize(), nFileSize); oFile.ReadFile(pFileData, oFile.GetFileSize(), nFileSize);
oFile.CloseFile(); oFile.CloseFile();
//skip bom
DWORD nInputBufferSize = nFileSize;
BYTE* pInputBuffer = pFileData;
if (nInputBufferSize >= 3 && 0xef == pInputBuffer[0] && 0xbb == pInputBuffer[1] && 0xbf == pInputBuffer[2])
{
nInputBufferSize -= 3;
pInputBuffer += 3;
}
else if (nInputBufferSize >= 2 && ((0xfe == pInputBuffer[0] && 0xff == pInputBuffer[1]) || (0xff == pInputBuffer[0] && 0xfe == pInputBuffer[1])))
{
nInputBufferSize -= 2;
pInputBuffer += 2;
}
const NSUnicodeConverter::EncodindId& oEncodindId = NSUnicodeConverter::Encodings[nCodePage]; const NSUnicodeConverter::EncodindId& oEncodindId = NSUnicodeConverter::Encodings[nCodePage];
NSUnicodeConverter::CUnicodeConverter oUnicodeConverter; NSUnicodeConverter::CUnicodeConverter oUnicodeConverter;
std::wstring sFileDataW = oUnicodeConverter.toUnicode((const char*)pFileData, nFileSize, oEncodindId.Name); std::wstring sFileDataW = oUnicodeConverter.toUnicode((const char*)pInputBuffer, nInputBufferSize, oEncodindId.Name);
INT nSize = sFileDataW.length(); INT nSize = sFileDataW.length();
const WCHAR *pTemp =sFileDataW.c_str(); const WCHAR *pTemp =sFileDataW.c_str();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment