m_pRescanFileInfo[index]->Update(filename);
loadSuccess = LoadFile(filename.c_str(), index, readOnly, encoding);
+ if (FileLoadResult::IsLossy(loadSuccess))
+ {
+ m_ptBuf[index]->FreeAll();
+ loadSuccess = LoadFile(filename.c_str(), index, readOnly,
+ GuessCodepageEncoding(filename, GetOptionsMgr()->GetInt(OPT_CP_DETECT), -1));
+ }
}
else
{
# define strncasecmp(a, b, n) _strnicmp((a), (b), (n))
#endif
-/** @brief Buffer size used in this file. */
-static const int BufSize = 65536;
-
/**
* @brief Prefixes to handle when searching for codepage names
* NB: prefixes ending in '-' must go first!
}
if (guessEncodingType & 1)
{
- if (len > BufSize)
- len = BufSize;
String lower_ext = string_makelower(ext);
if (lower_ext == _T(".rc"))
{
* @param [in] bGuessEncoding Try to guess codepage (not just unicode encoding).
* @return Structure getting the encoding info.
*/
-FileTextEncoding GuessCodepageEncoding(const String& filepath, int guessEncodingType)
+FileTextEncoding GuessCodepageEncoding(const String& filepath, int guessEncodingType, int mapmaxlen)
{
FileTextEncoding encoding;
- const int mapmaxlen = BufSize;
CMarkdown::FileImage fi(filepath.c_str(), mapmaxlen);
encoding.SetCodepage(ucr::getDefaultCodepage());
encoding.m_bom = false;
#include "UnicodeString.h"
#include "FileTextEncoding.h"
-FileTextEncoding GuessCodepageEncoding(const String& filepath, int guessEncodingType);
+/** @brief Buffer size used in this file. */
+static const int BufSize = 65536;
+
+FileTextEncoding GuessCodepageEncoding(const String& filepath, int guessEncodingType, int mapmaxlen = BufSize);