|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
Функция MultiByteToWideChar08.10.2017, 11:24. Показов 3256. Ответов 11
Метки нет (Все метки)
Не понятно почему первый параметр функции MultiByteToWideChar требует кодировку (насколько я понимаю, это кодировка исходной строки). Все равно там просто копируются байты из одного массива в другой. Тогда какое значение здесь имеет кодировка? Кодировка же играет роль только при выводе чтоб система отображения знала в каком виде показать эти байты, какие графические символы подставлять для конкретного набора байт. Думаю в контексте копирования байт это лишний параметр. Тот же аналог этой функции из стандартной библиотеки std::mbstowcs не требует кодировки. В чем подвох?
0
|
|
| 08.10.2017, 11:24 | |
|
Ответы с готовыми решениями:
11
MultiByteToWideChar подскажите Функция поиска в массиве и указатели + функция сортировки и поиск найденного элемента Перегрузка операций: friend-функция или функция-член класса |
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 08.10.2017, 13:27 | |
|
1
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 08.10.2017, 17:47 [ТС] | |
|
Croessmah,
Ну ок ещё чтоб длину строки правильно посчитать например. Зачем нужна кодировка чтоб скопировать байты из массива в другой массив? Кодировка это просто таблица символов где каждому символу соответствует определенный набор байт. Зачем нужно указывать при копировании исходную кодировку - не понятно. DrOffset, Не знал, спасибо! Но что это даёт в контексте копирования байт?
0
|
|
|
Неэпический
|
|||
| 08.10.2017, 17:59 | |||
|
Undisputed, и где здесь прямое копирование?
Широкие строки и мультибайтные - это разные вещи.
Ну попробуй строку 1251CP или UTF-8 скопировать напрямую в wchar_t.
1
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 08.10.2017, 18:10 [ТС] | |
|
Croessmah,
Ну получить ахинею это в принципе нормально же. Сменили кодировку - этим байтам уже соответствуют другие символы. Причём это может быть не всегда... Например при переводе из ascii в utf-8 никакой ахинеи быть не должно... Я понял что ты имеешь ввиду но тут снова возникают вопросы: 1. Какой смысл переводить данные в другую кодировку если мы хотим сохранить их прежнее представление? Ведь у нас уже есть нужное представление так зачем менять кодировку? 2. В указанной функции можно указать только одну кодировку (насколько я понял, это кодировка исходной строки), но для кодировки новой строки нет параметра. Зачем? В какой кодировке в таком случае будет новая строка? Поэтому и непонятно... Есть набор байт и и помоему для их копирования в новый массив никакие кодировки не нужны... А как работать с этим набором байт уже должны решать конкретные функции для работы со строками. Например strlen(bytes, codepage), и пусть считает сколько символов соответствует переданному набору байт в той кодировке что мы указали вторым параметром...
0
|
|
|
Неэпический
|
||||
| 08.10.2017, 18:21 | ||||
У тебя есть char-символ с кодом 255. Переведи его в UTF-16 Unicode. Как решишь, напиши код этого символа в UTF-16. Затем продолжим обсуждение. До тех пор, смысла не вижу, стоило бы сначала ознакомиться с кодировками и с чем их едят.
1
|
||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 08.10.2017, 18:27 [ТС] | |
|
Croessmah,
Говоря "переведи его" - имеется ввиду сохранить графическое представление, но в другой кодировке? Добавлено через 1 минуту А если у меня не windows и используется стандартная функция а не та что из winapi?
0
|
|
|
Неэпический
|
|||
| 08.10.2017, 18:31 | |||
Вот естт символ с кодом 255 в какой-то кодовой странице. Дай мне код этого символа в юникоде.
1
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 08.10.2017, 18:41 [ТС] | |
|
Croessmah,
Под линуксом wchar_t вроде 4 байта, это же просто тип, никак не связанный с понятием "кодировка"... Не могу найти логику в том как тип из 4 байт связан с кодировкой... Это просто 4 байта же... В них же нет доп. информации о кодировке. Вот это мне не понятно... А про ту функцию я понял, она задаст тот набор байт который соответствует переданным символам но уже в UTF16
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||
| 08.10.2017, 20:11 | |||
Сообщение было отмечено Undisputed как решение
РешениеА с wchar_t под windows, ровно как и под linux, просто действует умолчание, договоренность, что в них лежит UTF16/UTF32 соответственно. Т.е. это опять соглашение на уровне программиста\программистов. Добавлено через 6 минут Например процесс конвертации русской буквы А в кодировке CP1251 в кодировку KOI8-R состоит в нахождения соответствия коду 0xC0 (CP1251) кода 0xE1 (KOI8-R) и запись его в строку-приемник. С преобразованиями других кодировок в общем случае действует тот же принцип.
3
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 11.10.2017, 07:10 [ТС] | |
|
DrOffset,
Спасибо что разжевал
0
|
|
| 11.10.2017, 07:10 | |
|
Помогаю со студенческими работами здесь
12
Функция sqrt: существует более одного экземпляра. Функция перегруженная Выясните, сохраняет ли булева функция 0, 1, является ли функция линейной, монотонной, само двойственной? Какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|