Форум — Ответы     (  К темам )
 ?  S.A.M.: Проблема с кодировкой в RichEdit, вместо русского — китайский (24-03-2003 00:23:07)
У меня программа достаточно многофункциональная, предостаточно форм налеплено,
несколько Richedit-ов и т.д. Когда в процессе работы программы переключаешься между
окнами и прочим, на RichEdit-е вместо русских слов возникают китайские письмена,
т.е. проблема с кодировками, но в начале все нормально, обычная кириллица. Что делать?
 Павел (24-03-2003 20:23:06)
Интересная проблема.
А вместо русских слов возникают китайские письмена при вставке текста
в RichEdit откуда либо, или сначала туда нормально вставляется и отражается
русский текст, а потом этот текст сам перекодируется ?

Интересно, а если посмотреть на свойство Font этого RichEdit-a
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = RichEdit1->Font->Name;
}
или попробовать в таком "китайском" состоянии что либо добавить
(какой то текст) в этот RichEdit, каким шрифтом произойдет добавление -
русским или китайским.

И не может такое быть, что Вы откуда-либо копируете текст в DOS-кодировке,
и вставляете его в этой кодировке в RichEdit
Попробуйте его конвертнуть из Oem в Char:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
char buff[10000];
CharToOem(RichEdit1->Text.c_str(), buff);
RichEdit1->Text = AnsiString(buff);
}
 S.A.M. (24-03-2003 21:25:35)
Текст сам перекодируется. Если что-нить добавляю на русском, то новый текст нормальный, а вот старый — иероглифы. В чем беда? Бред какой-то.
 Георгий (24-03-2003 23:09:49)
а Windows пробовал переустановить?
 Павел (25-03-2003 00:39:31)
1/ Ну а что дает конвертация из Oem в Char ?

void __fastcall TForm1::Button2Click(TObject *Sender)
{
char buff[10000];
CharToOem(RichEdit1->Text.c_str(), buff);
RichEdit1->Text = AnsiString(buff);
}

Преобразует в нормальный или нет, и

2/ Какой шрифт показывает
Edit1->Text = RichEdit1->Font->Name;
в случае c иероглифами ?
 Георгий (25-03-2003 14:39:56)
Я что-то не понял — у S.A.M. вместо русского текста появляются настоящие китайские (японские) иероглифы или текст в DOS кодировке (CP 866?)?
если иероглифы, то возможно ОС "глючит".
если текст сам перекодируется в другую кодовую страницу, то ???
кстати OEMConvert, DefaultConverter чему равно?