locale и koi8-r
От: Аноним  
Дата: 17.09.02 13:14
Оценка:
Народ, как конвертировать строку из формата koi8-r?
Например, строка "абв" выглядит в koi8-r как c1 c2 d7 ("БВЧ")
а надо e0 e1 e2, т.е. "абв"
Попробовал так:
  CPINFOEX cpinfo;
  BOOL res = GetCPInfoEx(20866, 0, &cpinfo);
  res = GetCPInfoEx(20866, 0, &cpinfo);
  cout << cpinfo.CodePage <<" "<< cpinfo.CodePageName << endl;    
  //-------------------------
  WORD landId = MAKELANGID(LANG_RUSSIAN, 0x01);
  LCID lcId = MAKELCID(landId, SORT_DEFAULT);
  char destBuf[4], srcStr[4] = "БВЧ";
  int writteninclnull;
  //как подставить localeId для koi8-r?? Может вообще все это неправильно?
  writteninclnull = LCMapString(lcId, LCMAP_HALFWIDTH, srcStr, 4, destBuf, 4);
  if(writteninclnull = 0)
    Error(GetLastError());
  cout << destBuf << endl;
Re: locale и koi8-r
От: Аноним  
Дата: 18.09.02 08:54
Оценка:
Ну ни в жизь бы не подумал, что сработает такая **рня!
WCHAR wStr[128];
char *pch = ptrToMyFuckingkoi8rString;
int pchsize = (int)strlen(pch);
MultiByteToWideChar(0x5182, 0, pch, pchsize+1,  wStr, 128);
WideCharToMultiByte(1251, 0, wStr, 128, pch, pchsize+1, NULL, NULL);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.