Имя: Пароль:
1C
1С v8
winsock
0 freewind_sd
 
28.11.17
16:04
Здравствуйте.
Сталкивался ли кто ни будь с таким вопросом:
получаю данные по сети с использованием компонента
WinSock.GetData(Буфер,8);
при этом данные складываются в строку в виде UNICODE
при этом если код символа превышает 127, при
КодСимвола(Буфер)
я получаю соответствие юникода 1105 и т.д...
можно ли как то преобразовать в ANSII или получить данные в первоначальном виде?

Спасибо.
1 Fish
 
28.11.17
16:17
2 freewind_sd
 
28.11.17
16:35
Подстановкой?
Это грустный вариант...если измениться кодировка в системе соответствие уже не сработает...
мне больше конечно интересно можно ли как то данные без преобразования в юникод получить...ведь по сети уходит и приходит число от 0 до 255, только складывается в строку и в этот момент уже преобразовывается как я понял...
3 nordbox
 
28.11.17
16:38
почитай, может сам что то напишешь:
https://ru.wikipedia.org/wiki/Юникод
4 oleg_km
 
28.11.17
18:01
можно получить байтами, сохранить в файл и прочитать потом. Но сохранять тоже придется компонентом ADOStream, там несколько заморочено.
5 freewind_sd
 
28.11.17
20:56
почитай, может сам что то напишешь:
https://ru.wikipedia.org/wiki/Юникод

Читал...может напишу...через n лет...хотелось бы опыт других услышать...думаю не единственный у кого подобная задача была...
все таки можно ли получить не строкой из компоненты?
WinSock.GetData(Буфер,8) - 8 тип строка, другие типы выдают ошибку...хоть  COMSafeArray хоть БуферДвоичныхДанных
6 freewind_sd
 
04.12.17
09:15
в 1с недавно.
на текущий момент кроме как преобразованием типа
если кодсимвола = 1180 тогда переменная=186
по другому решить не удалось, есть опасение что на машине с другой кодировкой может криво работать...
с файлами не пробовал, наверное тоже работать будет...

еще вариант написать свою компоненту (для 7.7 делал), но это как ни будь потом...
Независимо от того, куда вы едете — это в гору и против ветра!