powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / CharToOemBuff
14 сообщений из 14, страница 1 из 1
CharToOemBuff
    #34143282
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ли где-нибудь, кроме user32.dll, такая же функция или ее аналог?

--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
CharToOemBuff
    #34143471
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WideCharToMultibyte
...
Рейтинг: 0 / 0
CharToOemBuff
    #34143479
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoWideCharToMultibyte
то что надо, спасибо
...
Рейтинг: 0 / 0
CharToOemBuff
    #34143519
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и её упрощенная версия wcstombs
...
Рейтинг: 0 / 0
CharToOemBuff
    #34152866
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перевожу строку unicode в oem, вместо русских букв получаю знаки вопроса ????? , кто-нибудь знает как бороться.
Спасибо.
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
CharToOemBuff
    #34152943
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код?
...
Рейтинг: 0 / 0
CharToOemBuff
    #34153037
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
bool ConvertToOem(void)
{
//-- m_pBuffer объявлен как void*
	if(m_length) //------------------------------------------------- если есть что переводить
	{
		if(m_bIsWideChar) //--------------------------------------------------------- UNICODE
		{
			wchar_t* pCopyBuff = _wcsdup((const wchar_t*)m_pBuffer);
			if(pCopyBuff)//-------------------------------------------- копия успешно создана
			{//----------- узнаем сколько нужно места (в байтах) под сконвертированную строку
				int size = WideCharToMultiByte(CP_OEMCP, NULL, pCopyBuff, (int)m_length, (char*) m_pBuffer, NULL, NULL, NULL);
				if(size <=  0 )//------------------------------------------------------- ошибка
				{
					free(pCopyBuff); //----------------------------- освобождаем копию буфера
					pCopyBuff = NULL;
					return false;
				}
				free(m_pBuffer);
				m_pBuffer = malloc(size + sizeof(char));
				if(!m_pBuffer)
				{
					free(pCopyBuff); //----------------------------- освобождаем копию буфера
					pCopyBuff = NULL;
					return false;
				}
// производим конвертацию
				size = WideCharToMultiByte(CP_OEMCP, NULL, pCopyBuff, (int)m_length, (char*) m_pBuffer, size, NULL, NULL);
				if(size != (int)m_length) 
				{
					free(pCopyBuff); //----------------------------- освобождаем копию буфера
					pCopyBuff = NULL;
					return false;
				}
				free(pCopyBuff); 
				pCopyBuff = NULL;
//- добавив символ ограничитель
				((char*)m_pBuffer)[m_length] = '\0';
				return true;//------------------------------- преобразование строки выполнено
			}
		}
	}

и как быть с ANSI, неужели преобразовывать к UNICODE, для случая описаного выше, когда не надо пользоваться CharToOem(Buff)?

--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
CharToOemBuff
    #34153229
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверь, юникодный ли у тебя текст в строке и может ли он корректно отобразиться в оемной кодировке (GetOEMCP())
Cerebrumи как быть с ANSI, неужели преобразовывать к UNICODEможешь, конечно, нарисовать таблицу перевода :)
...
Рейтинг: 0 / 0
CharToOemBuff
    #34153295
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GetOEMCP() вернула 866

--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
CharToOemBuff
    #34153306
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то что переводимая строка является строкой unicode, это 100%, т.к. я ее сам и задаю в виде
L"some_string_ляляля";
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
CharToOemBuff
    #34153345
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нука скомпиль это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
int main(void)
{
	wchar_t* wstr=L"asdфыв";
	char ostr[ 32 ];
	WideCharToMultiByte(CP_OEMCP, 0 ,wstr,- 1 ,ostr, 32 ,NULL,NULL);
	printf(ostr);
 return  0 ;
}
у меня работает как надо
...
Рейтинг: 0 / 0
CharToOemBuff
    #34153375
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, работает

--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
CharToOemBuff
    #34780554
_Ildar_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoнука скомпиль это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
int main(void)
{
	wchar_t* wstr=L"asdфыв";
	char ostr[ 32 ];
	WideCharToMultiByte(CP_OEMCP, 0 ,wstr,- 1 ,ostr, 32 ,NULL,NULL);
	printf(ostr);
 return  0 ;
}
у меня работает как надо

Как вместо
Код: plaintext
1.
L"asdфыв";
поставить переменную CString ?
...
Рейтинг: 0 / 0
CharToOemBuff
    #34781140
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем? передавай напрямую в функцию
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / CharToOemBuff
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]