hello
I'm new to c::b so be tolerant please 

According to encoding detection issue i made small code investigation.
I found something interesting:
void cbEditor::SetEncoding( wxFontEncoding encoding )
{
    if (!m_pData)
        return;
    if ( encoding == wxFONTENCODING_SYSTEM )
        encoding = wxLocale::GetSystemEncoding();
    if ( encoding == GetEncoding() )
        return;
    m_pData->m_encoding = encoding;
    SetModified(true);
    /* NOTE (Biplab#1#): Following method is wrong. The file is still in old encoding
    *  So if you try to load it with new encoding, you'll get garbage*/
    /*wxString msg;
    msg.Printf(_("Do you want to reload the file with the new encoding (you will lose any unsaved work)?"));
    if (cbMessageBox(msg, _("Reload file?"), wxYES_NO) == wxID_YES)
        Reload(false);
    else
        SetModified(true);*/
}
Why the code at the end is commented 

If encoding detector fails (it was happened to me 

 ) I have _NO_WAY_ to repair its mistake by reloading file with proper encoding !!!