Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
andrka
1 / 1 / 0
Регистрация: 30.12.2013
Сообщений: 10
#1

Из UTF-8 коды символов CP866 - C++

26.10.2015, 09:08. Просмотров 544. Ответов 9
Метки нет (Все метки)

Подскажите плиз. Есть строка в UTF-8, из нее необходимо получить char[] состоящий из кодов этих символов в CP866
Мысли такие, с помощью setlocale и wcstombs преобразовать строку в многобайтовый массив.
Потом поэлементно получать код символа из записывать в буфер.
Может есть варианты лучше?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2015, 09:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из UTF-8 коды символов CP866 (C++):

Введите массив символов из 12 элементов. Удвоить все коды символов массива - C++
Условие :Введите массив символов из 12 элементов. Удвоить все коды символов массива. Заранее спасибо )

Подсчет символов UTF-8. Считывание пробельных символов - C++
Написал программу считывания файла с кодировкой UTF-8. Но она не считывает пробельные символы. Программа получает на вход файл из...

Коды символов - C++
Как выводить символы зная их 8ичный код

Коды символов - C++
Как вам всем известно, для кодировки символов используется таблица ASCII, вот написал: #include"stdafx.h" #include"iostream" using...

Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32 - C++
Собсно сабж.

Вывод UTF-8 символов на стандартное ус-во - C++
У K&R если задание на подсчёт каждого символа из стандартного потока. // K&R. Программа подсчитует количество каждого символа // из...

9
nmcf
5532 / 4842 / 1640
Регистрация: 14.04.2014
Сообщений: 19,644
26.10.2015, 09:21 #2
Лучше - это вообще не пользоваться древними кодировками.
Для Windows сначала MultiByteToWideChar(CP_UTF8,...), затем WideCharToMultiByte(CP_OEMCP,...).
1
andrka
1 / 1 / 0
Регистрация: 30.12.2013
Сообщений: 10
26.10.2015, 09:51  [ТС] #3
Цитата Сообщение от nmcf Посмотреть сообщение
Лучше - это вообще не пользоваться древними кодировками.
Осталось только это объяснить производителю весов Teraoka)))
0
nmcf
5532 / 4842 / 1640
Регистрация: 14.04.2014
Сообщений: 19,644
26.10.2015, 09:58 #4
А что за задача? В весы нужно текст передавать? А utf8 откуда берётся?
0
andrka
1 / 1 / 0
Регистрация: 30.12.2013
Сообщений: 10
26.10.2015, 10:36  [ТС] #5
Загрузка списка товаров в весы. UTF-8 берется из 1C(там это стандартное представление юникода).
Весы требуют данные в определенном формате. Сам протокол обмена расписывать смысла, думаю, нет.
Например для загрузки в весы товара КОЛБАСА им надо передать строку 8A8E8B81809180
т. е. char[]={0x8a,0x8e,0x8b,0x81,0x80,0x91,0x80} шестнадцатеричные коды символов cp866

Или в десятичной системе т.е. char[]={138,142....}
1
nmcf
5532 / 4842 / 1640
Регистрация: 14.04.2014
Сообщений: 19,644
26.10.2015, 10:48 #6
Какого года весы? Кодировка 1251 как-то логичнее.
0
andrka
1 / 1 / 0
Регистрация: 30.12.2013
Сообщений: 10
26.10.2015, 11:04  [ТС] #7
Какого года не знаю. В 2004 они уже были и выпускаются до сих пор) Производитель Teraoka Seiko
0
zer0mail
2373 / 2003 / 199
Регистрация: 03.07.2012
Сообщений: 7,191
Записей в блоге: 1
26.10.2015, 12:29 #8
Перекодировка для Win1251:
C++
1
2
3
4
5
6
7
8
9
10
11
        
while ((inchar=fgetc(fidin))!=EOF)  {
// D0 (208) 'Р', D1(209) 'С' 
     if (inchar==208||inchar==209) {
           outchar=(inchar<<6)+(fgetc(fidin)&63)+176; 
           if (outchar==13489) outchar=168; // Ё
           if (outchar==13569) outchar=184; // ё
     }
     else outchar=inchar;
     fputc(outchar,fidout); // вывод младшего байта
}
Для ДОСа надо:
1. 176->128 (код "А" кириллицы)
2. учесть, что "рсту.." сдвинуты
3. изменить коды для Ёё
0
nmcf
5532 / 4842 / 1640
Регистрация: 14.04.2014
Сообщений: 19,644
26.10.2015, 13:20 #9
zer0mail, зачем это делать вручную?
0
zer0mail
2373 / 2003 / 199
Регистрация: 03.07.2012
Сообщений: 7,191
Записей в блоге: 1
26.10.2015, 13:27 #10
А мне не в лом, да и работать будет где угодно (хоть в ДОСе или TurboC древнем)
0
26.10.2015, 13:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2015, 13:27
Привет! Вот еще темы с ответами:

Коды символов ASCII - C++
Почему русские строковые литералы char first = 'А'; char last = 'Я'; cout &lt;&lt; (int)first &lt;&lt; endl&lt;&lt; (int)last; равняются...

перевести коды символов - C++
Добрый день. Имеется набор кодов символов формата Подскажите, как их перевести в символы? Спасибо.

Коды символов ANSI (CP-1251) - C++
Почему коды символов кириллицы принимают значения от -1 до -64? VS2012, код: #include &lt;string&gt; #include &lt;iostream&gt; #include...

Коды таблицы символов ASCII - C++
Почему когда я делаю явное преобразование вводимого с клавиатуры символа в int,компилятор выдаёт другие в отличии от таблицы ASCII...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru