[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: case IDM_FORMAT_CONV2_UCS_2LE:
{ {
int idEncoding = -1; int idEncoding = -1;
UniMode um = _pEditView->getCurrentBuffer()->getUnicodeMode(); Buffer *buf = _pEditView->getCurrentBuffer();
UniMode um = buf->getUnicodeMode();
int encoding = buf->getEncoding();
switch(id) switch(id)
{ {
case IDM_FORMAT_CONV2_ANSI: case IDM_FORMAT_CONV2_ANSI:
{ {
if (um == uni8Bit) if (encoding != -1)
return; {
// do nothing
return;
}
else
{
if (um == uni8Bit)
return;
idEncoding = IDM_FORMAT_ANSI; // set scintilla to ANSI
idEncoding = IDM_FORMAT_ANSI;
}
break; break;
} }
case IDM_FORMAT_CONV2_AS_UTF_8: case IDM_FORMAT_CONV2_AS_UTF_8:

View File

@ -1493,19 +1493,23 @@ void ScintillaEditView::bufferUpdated(Buffer * buffer, int mask) {
} }
if (mask & BufferChangeUnicode) if (mask & BufferChangeUnicode)
{ {
int enc = CP_ACP;
if (buffer->getUnicodeMode() == uni8Bit) if (buffer->getUnicodeMode() == uni8Bit)
{ //either 0 or CJK codepage { //either 0 or CJK codepage
LangType typeDoc = buffer->getLangType(); LangType typeDoc = buffer->getLangType();
if (isCJK()) if (isCJK())
{ {
if (typeDoc == L_CSS || typeDoc == L_CAML || typeDoc == L_ASM || typeDoc == L_MATLAB) 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 else
execute(SCI_SETCODEPAGE, _codepage); enc = _codepage;
} }
else
enc = CP_ACP;
} }
else //CP UTF8 for all unicode else //CP UTF8 for all unicode
execute(SCI_SETCODEPAGE, SC_CP_UTF8); enc = SC_CP_UTF8;
execute(SCI_SETCODEPAGE, enc);
} }
} }
} }