Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/141: Рейтинг темы: голосов - 141, средняя оценка - 4.84
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 211
1

Перекодировка строки в Windows-1251

12.12.2016, 10:29. Показов 27179. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Формирую QR-код через dll которую 1С используют в типовых решениях (БГУ и проч). Загоняю строку в ком объект, он отдает сформированную картинку, все ок.
Но, считыватель читает в другом формате по умолчанию. Т.е. 1с формирует в "utf-8", а сканер читает в "windows-1251". и я вот запарился переводить в строку с другой кодировкой. В 1С стандартное решение которое я нашел - это загонять текст в контейнер "ИнтернетПочтовыйТекст", мне не подошло, т.к. в самом контейнере извлечь текст в перекодированном формате не получилось. Сделал через Шиндовс АПИ, на примере с мисты:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Функция ПерекодироватьВ1251(КодируемыйТекст)
    
    Стрим           = Новый COMОбъект("Adodb.Stream");
    Стрим.Type      = 2;
    Стрим.Mode      = 3;
    Стрим.charset   = "utf-8";
    Стрим.Open();
    Стрим.WriteText(КодируемыйТекст);
    Стрим.Position  = 0;
    Стрим.charset   = "windows-1251";
    ПерекодируемыйТекст = Стрим.ReadText(-1);
    Стрим.Close();
    Возврат ПерекодируемыйТекст;
    
КонецФункции
Вроде возвращается строка, но какая-то "нечитаемая". Вместо слова "КРУГ" выдает "РљР*РЈР". Потом это какозябра залетает в QR и сканер считывает ее с QR-кода именно как "РљР РЈР", а не круг.
При чем "РљР*РЈР" перед заворачиванием в QR не равно "РљР РЈР" после считывания. Так как в первом случае пробел это Символы.НПП, а во втором пробел это пробел.
Вопрос, "РљР*РЈР" - это и есть "КРУГ" в кодировке вин-1251? Как можно проверить? Запутался с кодировками.... =(

PS при копировании строки сюда на форму символ нераздел пробела отобразился как "*"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2016, 10:29
Ответы с готовыми решениями:

Перекодировка с windows-1251 в utf-8
как можно написать процедуру на pl/sql, чтобы перекодировал с windows-1251 в utf-8 ?

Перекодировка из КОИ-8 в Windows 1251
Разработать программу перекодировки текстовых файлов из кодового набора КОИ-8 в кодовый набор...

Перекодировка из OEM-866 в Windows-1251
написан батник, результат каждой команды он выводит в лог так: 1>>%~dp0\log.txt 2>>&1 понятно...

Apache : перекодировка windows-1251-> unicode/utf-8
Проблема такого плана, необходимо средствами сервера заставить перекодировать 'на лету' файлы...

1
0 / 0 / 0
Регистрация: 20.02.2018
Сообщений: 1
20.02.2018, 15:12 2
В 1С 8.3 подвезли новую функцию

1C
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Глобальный контекст.КодироватьСтроку (Global context.EncodeString)
Глобальный контекст (Global context)
КодироватьСтроку (EncodeString)
Синтаксис:
 
КодироватьСтроку(<Строка>, <СпособКодированияСтроки>, <КодировкаСтроки>) 
Параметры:
 
<Строка> (обязательный)
 
Тип: Строка. 
Кодируемая строка. 
<СпособКодированияСтроки> (обязательный)
 
Тип: СпособКодированияСтроки. 
Способ кодирования строки. 
<КодировкаСтроки> (необязательный)
 
Тип: Строка. 
Кодировка, в которую преобразуется строка перед кодированием.
Значение по умолчанию: UTF8. 
Возвращаемое значение:
 
Тип: Строка. 
 
Описание:
 
Кодирует строку в соответствии с выбранным способом кодирования.
 
Доступность: 
 
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). 
Пример:
 
Стр1 = КодироватьСтроку("http://tools.ietf.org/папка/rfc2822", 
                СпособКодированияСтроки.КодировкаURL);
Стр2 = КодироватьСтроку("http://tools.ietf.org/папка/rfc2822", 
                СпособКодированияСтроки.URLВКодировкеURL);
Стр3 = РаскодироватьСтроку( 
                "http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D1%80", 
                СпособКодированияСтроки.КодировкаURL);
 
Сообщить(Стр1);
Сообщить(РаскодироватьСтроку(Стр1, 
                СпособКодированияСтроки.КодировкаURL));
Сообщить(Стр2);
Сообщить(РаскодироватьСтроку(Стр2, 
                СпособКодированияСтроки.КодировкаURL));
Сообщить(Стр3);
Сообщить(КодироватьСтроку(Стр3, 
                СпособКодированияСтроки.URLВКодировкеURL));
 
 
См. также:
 
СпособКодированияСтроки
Глобальный контекст, метод РаскодироватьСтроку
0
20.02.2018, 15:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2018, 15:12
Помогаю со студенческими работами здесь

Перекодировка строки win-1251 в кодировку utf-8
Помогите пожалуйста! есть проблема перекодировки строки win-1251 в кодировку utf-8. Может есть...

Перекодировка из utf в windows-1251. Удаление спец. символов.
Необходимо сформировать xml файл в кодировке windows-1251. Даные для этого xml поступают из БД в...

Setconsolecp 1251, setconsoleoutputcp 1251 (Windows.h), сбиваются шрифты на других ПК
Пишу консольную прогу с помощью vs 2017 (v141), на windows 10, с версией sdk 10.0.17134.0, MFC - в...

Перекодировка содержимого текстового файла в Win-1251 и запись результата в новый файл с именем компьютера
Добрый день, подскажите пожалуйста... стоит задача написать bat, который будет собирать информацию...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru