![]() |
|
Кириллица по сети во внешней компоненте | ☑ | ||
---|---|---|---|---|
0
ДНН
06.04.21
✎
22:03
|
Есть внешняя компонента на С++, которая принимает данные по сети. Данные приходят в кодировке UTF-8. Латиница передается корректно, а кириллица приходит кракозябрами.
Код получения данных: wchar_t* data char* packet_data; packet_data = (char*)malloc(MaxSizeOfPacket * sizeof(char)); sockaddr_in from; int fromLength = sizeof(from); int received_bytes = recvfrom(handle, packet_data, MaxSizeOfPacket, 0, (sockaddr*)&from, &fromLength); if (received_bytes == SOCKET_ERROR) { data = L""; } else { mbstowcs(data, packet_data, MaxSizeOfPacket); } free(packet_data); То есть recvfrom получает char*, а потом mbstowcs переводит их в wchar_t* Что не так? Как кириллицу получить? |
|||
1
DJ Anthon
06.04.21
✎
22:18
|
“ ¬Ґп ўбҐ ®а¬ «м® ЇаЁе®¤Ёв, Їа®Ў«Ґ¬л ў 襩 бв®а®Ґ
|
|||
2
acht
06.04.21
✎
22:30
|
(0) А ты вообще в каких единицах память выделяешь и считаешь?
Сходи на MSDN или на StackOverflow, посмотри примеры использования. |
|||
3
vde69
06.04.21
✎
22:33
|
UTF-8 это 2 байта на 1 символ
|
|||
4
acht
06.04.21
✎
22:48
|
(3) UTF-8, это от 1 байта до 6. Не смущай народ.
|
|||
5
ДНН
06.04.21
✎
22:51
|
(4) от 1 до 4
для переменной Data выделяю так Data = (wchar_t*)malloc(MaxSizeOfPacket * sizeof(wchar_t)); |
|||
6
acht
06.04.21
✎
23:02
|
Что изменилось со времени Кириллица во внешней компоненте ?
|
|||
7
ДНН
06.04.21
✎
23:17
|
(6) с того клиента кириллица приходит как надо. С этой задачей это не связано
|
|||
8
ДНН
06.04.21
✎
23:17
|
Тогда наверно проблема на стороне отправки сообщения, а не в ВК
|
|||
9
spectre1978
07.04.21
✎
07:14
|
А не может быть такого, что вы не совсем верно определяете кодировку? Например, что в реальности у вас utf-16 le, а не utf-8.
|
|||
10
Кирпич
07.04.21
✎
07:44
|
Там же локаль нужно как то определить. Как функция узнает, как закодирована входная строка.
|
|||
11
Кирпич
07.04.21
✎
07:45
|
||||
12
ДНН
07.04.21
✎
07:56
|
Разобрался, всем спасибо. Опять не указал кодировку при отправке данных. Ответ был в моей же теме примерно полгода назад
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |