[BUG_FIXED] Fix the Unicode to ANSI encoding bug.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@574 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
Don Ho 2009-11-27 19:00:42 +00:00
parent 9ebb4b39f5
commit 9746d60cde
2 changed files with 22 additions and 7 deletions

View File

@ -4694,16 +4694,27 @@ void Notepad_plus::command(int id)
case IDM_FORMAT_CONV2_UCS_2LE:
{
int idEncoding = -1;
UniMode um = _pEditView->getCurrentBuffer()->getUnicodeMode();
Buffer *buf = _pEditView->getCurrentBuffer();
UniMode um = buf->getUnicodeMode();
int encoding = buf->getEncoding();
switch(id)
{
case IDM_FORMAT_CONV2_ANSI:
{
if (encoding != -1)
{
// do nothing
return;
}
else
{
if (um == uni8Bit)
return;
// set scintilla to ANSI
idEncoding = IDM_FORMAT_ANSI;
}
break;
}
case IDM_FORMAT_CONV2_AS_UTF_8:

View File

@ -1493,19 +1493,23 @@ void ScintillaEditView::bufferUpdated(Buffer * buffer, int mask) {
}
if (mask & BufferChangeUnicode)
{
int enc = CP_ACP;
if (buffer->getUnicodeMode() == uni8Bit)
{ //either 0 or CJK codepage
LangType typeDoc = buffer->getLangType();
if (isCJK())
{
if (typeDoc == L_CSS || typeDoc == L_CAML || typeDoc == L_ASM || typeDoc == L_MATLAB)
execute(SCI_SETCODEPAGE, 0); //you may also want to set charsets here, not yet implemented
enc = CP_ACP; //you may also want to set charsets here, not yet implemented
else
execute(SCI_SETCODEPAGE, _codepage);
enc = _codepage;
}
else
enc = CP_ACP;
}
else //CP UTF8 for all unicode
execute(SCI_SETCODEPAGE, SC_CP_UTF8);
enc = SC_CP_UTF8;
execute(SCI_SETCODEPAGE, enc);
}
}
}