|
v8: Перекодировка комментария из UTF8 в cp1251 | ☑ | ||
---|---|---|---|---|
0
mardrake
12.11.12
✎
14:42
|
Собственно есть запрос
_http.Получить("bgbilling/executer?id=new&module=contract&summa="+ Summa +"&pt=2&action=UpdateContractPayment&comment="+ comment +"&date="+Формат(Выборка.ДатаВыписки,"ДФ=dd.MM.yyyy")+"&user=admin&pswd=pass&cid="+id+"&"); там где comment="+ comment +" comment=Выборка.НазначениеПлатежа; При отправке запроса в коментарии выходят кракозябры, так как в 1С utf8 , а в самом биллинге cp1251. Как перекодировать comment в cp1251 и отправить в биллинг. Процедура КнопкаВыполнитьНажатие(Кнопка) _массивВыписки = Новый Массив; _http = Новый HTTPСоединение("billing.bill.ru"); для каждого _строка Из ОсновнаяТЧ ЦИКЛ Если _строка.Флаг тогда _массивВыписки.Добавить(_строка.Выписка); КонецЕсли; КонецЦикла; Запрос = Новый Запрос; Запрос.УстановитьПараметр("выбВыписки", _массивВыписки); Запрос.Текст = "ВЫБРАТЬ | ПоступлениеНаРасчетныйСчет.ДоговорКонтрагента.Номер КАК НомерДоговора, | ПоступлениеНаРасчетныйСчет.Дата КАК ДатаВыписки, | ПоступлениеНаРасчетныйСчет.СуммаДокумента КАК Сумма, | ПоступлениеНаРасчетныйСчет.НазначениеПлатежа КАК НазначениеПлатежа |ИЗ | Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет |ГДЕ | ПоступлениеНаРасчетныйСчет.Ссылка В(&выбВыписки)"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Соединение = Новый COMОбъект("ADODB.Connection"); л_Параметры_соединения = "DRIVER={MySQL ODBC 5.1 Driver};OPTION=3;DATABASE=bgbilling;PWD=pass;PORT=3306;SERVER=bill.ru;UID=admin"; Попытка Соединение.Open(л_Параметры_соединения); Исключение Сообщить("Отсутствует связь с базой!"); КонецПопытки; л_Команда = Новый COMОбъект("ADODB.Command"); л_Команда.ActiveConnection = Соединение; Пока Выборка.Следующий() Цикл comment = Выборка.НазначениеПлатежа; ND = Выборка.НомерДоговора; Summa = Выборка.Сумма; Сообщить(ND); Сообщить(Summa); _ТЕКСТЗапроса = "SELECT id FROM contract WHERE title='"+ND+"'"; Сообщить(_ТЕКСТЗапроса); л_Команда.CommandText = _ТЕКСТЗапроса; Результат = л_Команда.Execute("id"); Пока НЕ Результат.EOF Цикл ID = Результат.Fields("id").Value; Сообщить ("ID "+ID); _http.Получить("bgbilling/executer?id=new&module=contract&summa="+ Summa +"&pt=2&action=UpdateContractPayment&comment="+ comment +"&date="+Формат(Выборка.ДатаВыписки,"ДФ=dd.MM.yyyy")+"&user=admin&pswd=pass&cid="+id+"&", "C:\Temp\resp_"+id); Результат.MoveNext(); КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
1
Ork
12.11.12
✎
14:44
|
(0) Сам нашел только такой способ : записать в файл - перекодировать уже файл - запулять куда нужно.
Строки в 1С хранятся в юникод и никак иначе. |
|||
2
mardrake
12.11.12
✎
16:31
|
Пробую так
Текст = Новый ЗаписьТекста("d:\win.txt", КодировкаТекста.UTF8); Текст.ЗаписатьСтроку(comment); Текст.Закрыть(); Текст = Новый ЧтениеТекста("d:\win.txt", КодировкаТекста.UTF8); Стр = Текст.ПрочитатьСтроку(); Сообщить(Стр); КодировкаТекста.cp1251 нету |
|||
3
mardrake
12.11.12
✎
16:31
|
:(
|
|||
4
drcrasher
12.11.12
✎
16:33
|
(2) ANSI? Системная?
Вторая вероятнее, т.к. под виндами она таки win1251 |
|||
5
mardrake
12.11.12
✎
17:51
|
Пробую так
comment = Выборка.НазначениеПлатежа; Текст = Новый ЗаписьТекста("h:\win.txt", "cp1251"); Текст.ЗаписатьСтроку(comment); Текст.Закрыть(); Текст = Новый ЧтениеТекста("h:\win.txt", "cp1251"); Стр = Текст.ПрочитатьСтроку(); Сообщить(Стр); |
|||
6
mardrake
12.11.12
✎
17:51
|
и так
comment = Выборка.НазначениеПлатежа; Текст = Новый ЗаписьТекста("h:\win.txt", "windows-1251"); Текст.ЗаписатьСтроку(comment); Текст.Закрыть(); Текст = Новый ЧтениеТекста("h:\win.txt", "windows-1251"); Стр = Текст.ПрочитатьСтроку(); Сообщить(Стр); |
|||
7
mardrake
12.11.12
✎
17:52
|
результата не дает
|
|||
8
drcrasher
12.11.12
✎
18:03
|
могу посоветовать посмотреть на WSH
|
|||
9
Vladal
12.11.12
✎
18:12
|
*коММентарии. Искренне Ваш, Grammar Nazi
(0) Посмотри тему на SQL.ru http://www.sql.ru/forum/actualthread.aspx?tid=786292 |
|||
10
mardrake
19.11.12
✎
14:18
|
Вообщем было принято решение, создать справочник и заменять символы из строки на наименование в справочнике.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |