Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 190
#1

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

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

Формирую 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2016, 10:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перекодировка строки в Windows-1251 (1С):

Можно ли изменить кодировку Windows-1251 на Utf-8 при помощи Cmd.exe?
В бух.7.7 создал файл.txt, нужно сохранить его в utf-8. Средства 1с77 позволяют...

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

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

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

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

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

1
nakolimu
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2018, 15:12
Привет! Вот еще темы с решениями:

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

Изменить кодировку строки UTF-8 to windows-1251
получаю из хмл текст, он весь в UTF-8. как изменить кодировку строки UTF-8 to...

Как получить windows-1251 строку из DOS строки
Всем привет! Моё приложение содержит строку вида C:\Progra~1\... и далее есть...

Напишите функцию перевода строки из кодировки Windows-1251 в UTF-8
Кто знает, напишите, пожалуйста, функцию перевода строки из кодировки...


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

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

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