BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 00:05

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 11:22 
Не в сети

Зарегистрирован: 01 мар 2016, 11:07
Сообщения: 5
Карма: 0
проблема такова:
после обновления(крайнего на 01.03.2016) появились проблемы с кодировкой данных получаемых по http
вот примеры запросов URL, а в прицепе скрины ответов

озвращает вопросы
SQL
SELECT invoice.format_number AS 'НомерДок', DATE_FORMAT(invoice.create_dt,'%Y%m%d%H%m%s') AS 'ДатаДок',
invoice.id AS 'ИДДокумента', contract.title AS 'НомерДоговора', invoice.summ AS 'Сумма' ,invoice.xml,
Vid.Title AS 'ВидДокумента'
FROM bill_invoice_data_5 AS invoice
INNER JOIN contract ON (invoice.cid=contract.id) AND (contract.fc=1)
INNER JOIN bill_doc_type_5 AS Vid ON Vid.id=invoice.type
WHERE invoice.create_dt>='2016.01.31'
AND invoice.create_dt<='2016.01.31'
URL
http://10.78.2.1:8080/bgbilling/executer?
user=user&pswd=pass&module=sqleditor&action=SQLEditor&pageSize=100000&sql=%0A%20SELECT%20%20invoice.format_number%20AS%20%27%D0%9D%D0%BE%D0%BC%D0%B5%D1%80%D0%94%D0%BE%D0%BA%27%2C%20DATE_FORMAT%28invoice.create_dt%2C%27%25Y%25m%25d%25H%25m%25s%27%29%20AS%20%27%D0%94%D0%B0%D1%82%D0%B0%D0%94%D0%BE%D0%BA%27%2C%0A%20%09%09%20%20invoice.id%20AS%20%27%D0%98%D0%94%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%27%2C%20contract.title%20AS%20%27%D0%9D%D0%BE%D0%BC%D0%B5%D1%80%D0%94%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0%27%2C%20invoice.summ%20AS%20%27%D0%A1%D1%83%D0%BC%D0%BC%D0%B0%27%20%2Cinvoice.xml%2C%0A%09%09%20%20Vid.Title%20AS%20%27%D0%92%D0%B8%D0%B4%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%27%0A%20FROM%20%20bill_invoice_data_5%20AS%20invoice%20%0A%20INNER%20JOIN%20contract%20ON%20%28invoice.cid%3Dcontract.id%29%20AND%20%28contract.fc%3D1%29%0A%20INNER%20JOIN%20bill_doc_type_5%20AS%20Vid%20ON%20Vid.id%3Dinvoice.type%0A%20WHERE%20invoice.create_dt%3E%3D%272016.01.31%27%20%0A%09AND%20invoice.create_dt%3C%3D%272016.01.31%27


это норм
SQL
SELECT id, name, title FROM module WHERE name='bill'ORDER BY id
URL
http://10.78.2.1:8080/bgbilling/execute ... %20BY%20id

помогите кто чем могёт)


Вложения:
GN2.png
GN2.png [ 46.02 КБ | Просмотров: 7873 ]
GN1.png
GN1.png [ 80.01 КБ | Просмотров: 7873 ]


Последний раз редактировалось rustavel 01 мар 2016, 11:43, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 11:43 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
версии где?

ну у вас там SQLEditor во-первых, во-вторых там проблемы только в колонке xml в которой по определению бинарные данные. что именно вы хотите там видеть? у вас что, до обновления там как-то по другому рисовалось?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 11:54 
Не в сети

Зарегистрирован: 01 мар 2016, 11:07
Сообщения: 5
Карма: 0
версии пока не могу получить
вообще я получаю эти данные через 1с, а здесь для наглядности так выложил
там не бинарные данные, а текстовые рускоязычные
до обновления было всё корректно
можно даже увидеть на скринах, что это строковое значение со знаками пунктуации


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 11:58 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
посмотрите
Код:
show create table bill_invoice_data_5;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 11:58 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а я вам говорю, что в колонке "xml" в этой таблице бинарные данные, там xml-ка в байтовом виде хранится, причём тут ясно видно что внутри у вас xml в 1251 почему-то.
именно потому оно будет в виде недоюникода рисоваться, т.к. вывод в utf-8 приходит. но 1251 быть кагбэ не должно, потому я спросил - какая версия. без этого смысла нет разбираться, и как следствие вопрос: что это было за "обновление" - откуда и куда.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 13:33 
Не в сети

Зарегистрирован: 09 июн 2010, 08:32
Сообщения: 38
Карма: 0
На 5.2 было
Код:
<?xml version="1.0" encoding="windows-1251"?><data><bill cid="363" type="3" contract="22583" contract_date1="01.11.2010" contract_date2="" fc="1" firmId="0" balance_mode="1" yy="2010" mm="11" month="ноябрь" period_date1="01.11.2010" period_date2="30.11.2010" date="02.12.2010" bill_number="00014" payer="Товарищество Собственников Жилья " total_sum="600.00" npid="2"><pos position_id="1" name="Доступ в интернет 11-2010 г." summ="600.00" unit="шт." quantity="1" qtynums="0" insum="1" awlz="0"></pos><tariff_bill><personal_tariff id="12" tree_id="40" title="микс 128 за 600р" date1="01.11.2010" date2=""></personal_tariff></tariff_bill><contract_data cid="363"><contract cid="363" title="22583" comment="Товарищество Собственнико
...


На 6.2 стало
Код:
<?xml version="1.0" encoding="UTF-8"?><data><bill saldo="-1000.00" saldo_prev="-1000.00" amounts="1000.00" payments="1000.00" charges="0.00" cid="10291" type="3" type_title="Счёт-фактура" contract="33798" contract_date1="23.10.2013" contract_date2="" fc="1" balance_mode="1" yy="2016" mm="1" month="январь" period_date1="01.01.2016" period_date2="31.01.2016" date="31.01.2016" bill_number="89029" payer="ООО &quot;КЭС&quot;" total_sum="1000.00" npid="2" correction="0"><pos position_id="1" name="Доступ в интернет за январь"
...


Это в одной и той же таблице, на одном коннекте . Кодировка коннекта c mysql cp1251.

Вопрос - откуда эта таблица берет информацию о кодировке? <?xml version="1.0" encoding="UTF-8"?>
Что то не видать нигде настроек...
Подскажите пожалуйста?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 14:04 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Нет никаких настроек, в 6.2 просто xml сериализуется в utf-8 (когда-то давно сериализовалось в 1251) и сохраняется в виде байтов в блоб в поле таблицы.
Кодировка таблицы, коннекта, бд итд итп здесь совершенно ни при чём. Ещё раз - xml хранится в блобе в виде последовательности байтов.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 14:21 
Не в сети

Зарегистрирован: 01 мар 2016, 11:07
Сообщения: 5
Карма: 0
извиняюсь .. и чего делать то?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 14:58 
Не в сети

Зарегистрирован: 09 июн 2010, 08:32
Сообщения: 38
Карма: 0
А зачем она пишет туда в utf-8, если таблица (да и кажется вся база) в cp1251? Какая в этом вообще тогда логика?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 15:00 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Цитата:
извиняюсь .. и чего делать то?)

Ну это смотря что вы хотите получить в итоге. Если строку - читать как байты и трактовать эти байты как строку в заранее известной кодировке (utf-8). Есть разобранный dom-объект, то во всех api всех языков есть возможность читать вход как байтовую последовательность. Это ровно то же самое, что вы просто из файла с диска читаете, в файле тоже никаких кодировок нет же, набор байтов.
У вас смысл через http-запрос это сделать обязательно?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 15:09 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
babay951 писал(а):
А зачем она пишет туда в utf-8, если таблица (да и кажется вся база) в cp1251? Какая в этом вообще тогда логика?

Вопрос непонятен. Он пишет туда набор байтов. У набора байтов нет кодировки по определению. У блоба, в котором xml хранится тоже нет кодировки по определению. Потому кодировка таблицы, бд, сервера тут ни при чём.

Идём далее: набор байтов получается, когда xml-документ сериализуется в них. Для этого используется какая-либо "кодировка", очевидно, т.к. кодировка - это алгоритм представления символьных последовательностей в виде байтовых (она же, кодировка, кстати, указывается в самом теле xml и является его атрибутом).
Должна использоваться какая-либо кодировка. Используется utf-8. Почему нужно использовать 1251? Сейчас не 1998й год же.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 15:11 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Почему там именно в блобе хранится - вопрос отдельный и выходит за рамки обсуждения. Для простоты и краткости нужно считать, что по историческим причинам.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 15:14 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
С практической точки зрения по поводу вопроса "что делать" в случае если именно нужно использовать а) http-запрос б) module=sqleditor&action=SQLEditor тут нужно играть с запросом, а именно глядеть в сторону:
Код:
SELECT .... CAST(invoice.xml AS CHAR(666666) CHARACTER SET utf8) as xml ...

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 21:13 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
В модуле бухгалтерии с xml-ками созданными в cp-1251 в 5.2 на 6.2 надо поступать так :
Код:
UPDATE bill_data_5 SET xml = REPLACE(xml, 'windows-1251', 'utf-8');
ALTER table bill_data_5 CHANGE xml xml mediumtext CHARACTER SET cp1251;
ALTER TABLE bill_data_5 MODIFY xml mediumtext CHARACTER SET utf8;
ALTER table bill_data_5 CHANGE xml xml mediumblob;

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 21:43 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а зачем?
в биллинге обрабатывается корректно и старые и новые xml-ки, созданные в любых версиях, т.е. там вообще кодировка не учитывается (т.к. и не должна).

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 01 мар 2016, 21:45 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
и да, если уже есть и такие и такие xml (в общем-то переход случился где-то посередине 6.2), то вы такими действиями их как раз попортите, нет?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 02 мар 2016, 07:37 
Не в сети

Зарегистрирован: 01 мар 2016, 11:07
Сообщения: 5
Карма: 0
dimOn писал(а):
С практической точки зрения по поводу вопроса "что делать" в случае если именно нужно использовать а) http-запрос б) module=sqleditor&action=SQLEditor тут нужно играть с запросом, а именно глядеть в сторону:
Код:
SELECT .... CAST(invoice.xml AS CHAR(666666) CHARACTER SET utf8) as xml ...

с cp1251 вместо utf8 заработало
спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 02 мар 2016, 13:50 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а ну да, 1251 логично. у вас то 1251 же, я уже запутался вы тут вдвоём писали
но вопрос остаётся открытым - почему 1251 то? какая версия? если у вас настолько дремучая версия, что туда в 1251 биллинг пишет, то что могло сломаться 1го марта то?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кодировка аля ???
СообщениеДобавлено: 02 мар 2016, 14:00 
Не в сети

Зарегистрирован: 01 мар 2016, 11:07
Сообщения: 5
Карма: 0
dimOn писал(а):
а ну да, 1251 логично. у вас то 1251 же, я уже запутался вы тут вдвоём писали
но вопрос остаётся открытым - почему 1251 то? какая версия? если у вас настолько дремучая версия, что туда в 1251 биллинг пишет, то что могло сломаться 1го марта то?

я занимаюсь только 1с и доступа в недры не имею
как было сказано "сломалось после обновления"
больше информации у меня нет..


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.087s | 56 Queries | GZIP : On ]