forum.bitel.ru
http://forum.bitel.ru/

"Кракозябры" в реестре счетов
http://forum.bitel.ru/viewtopic.php?f=14&t=9660
Страница 1 из 1

Автор:  ok-2004 [ 04 сен 2014, 16:40 ]
Заголовок сообщения:  "Кракозябры" в реестре счетов

Добрый день!

При выгрузке реестра счетов в файл csv адрес пишется совершенно непонятной кодировке. Открыть невозможно нигде ( ни в Вин не в Лин, не в LO не в МО...не в OO):
Код:
;;00000016;пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ;;31.08.2014;-3950.00;2500.00;150.00;2650.00;
   ;;00000015;пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ;;31.08.2014;-1000.00;1000.00;1000.00;
   ;;00000014;пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ;;31.08.2014;2000.00;1000.00;1000.00;
   ;;00000013;пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ;;31.08.2014;-20000.00;2000.00;2000.00;


Хотя

Код:
file reestr.csv

reestr.csv: UTF-8 Unicode text



Как можно это побороть ?


Код:
locale

LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=



Информация о версии:

Клиент: вер. 6.0 сборка 1318 от 12.05.2014 20:43:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45
Сервер: вер. 6.0 сборка 1736 от 12.05.2014 20:43:24
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45

bill вер. 6.0 сборка 343 от 12.03.2014 19:11:40
card вер. 6.0 сборка 227 от 06.05.2014 18:58:40
dialup вер. 6.0 сборка 404 от 24.04.2014 19:38:56
drweb вер. 6.0 сборка 98 от 10.04.2014 19:28:24
email вер. 6.0 сборка 187 от 05.02.2014 15:53:45
inet вер. 6.0 сборка 1383 от 12.05.2014 20:43:52
ipn вер. 6.0 сборка 276 от 10.04.2014 19:28:30
mps вер. 6.0 сборка 215 от 15.04.2014 18:38:43
npay вер. 6.0 сборка 225 от 23.04.2014 14:16:23
payonline вер. 6.0 сборка 82 от 13.05.2014 15:58:41
reports вер. 6.0 сборка 212 от 14.04.2014 16:39:52
ru.bitel.bgbilling.plugins.crm вер. 6.0 сборка 216 от 23.04.2014 16:50:27
ru.bitel.bgbilling.plugins.dispatch вер. 6.0 сборка 111 от 13.05.2014 15:58:42
ru.bitel.bgbilling.plugins.documents вер. 6.0 сборка 199 от 02.04.2014 17:18:42
ru.bitel.bgbilling.plugins.helpdesk вер. 6.0 сборка 209 от 12.05.2014 13:07:11
trayinfo вер. 6.0 сборка 176 от 05.02.2014 15:55:51
voiceip вер. 6.0 сборка 232 от 12.05.2014 16:41:36
wm вер. 6.0 сборка 191 от 05.02.2014 15:56:42
yamoney вер. 6.0 сборка 72 от 07.05.2014 14:45:13


preempt_bill_reestr.xsl - дефолтный..

ОС:

Код:
cat /etc/issue
Debian GNU/Linux 7 \n \l

uname -ar
Linux bgb 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux

Автор:  zavndw [ 04 сен 2014, 17:00 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

а выгружается в винды или linux?

Автор:  dimOn [ 04 сен 2014, 17:09 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

всегда заполняйте LC_ALL
Цитата:
пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
видно же, что заведомо уже побито, конечно не откроется

1. как именно откуда сохраняете
2. клиент под какой ос?

Автор:  ok-2004 [ 04 сен 2014, 17:29 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

реестр выгружался с 2-х клиентов : c win8.1 и с xubuntu14.04

В обоих случаях профиль яиц - один и тот же...

сделал так :

root@bgb:~# locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8

рестартнул сервер,
один хрен...

Автор:  ok-2004 [ 04 сен 2014, 17:39 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

В preempt_bill_reestr.xsl подправил тока id параметров договоров:
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:st="bitel.billing.server.bill.bean.SummaToString"
xmlns:counter="bitel.billing.server.util.exslt.Counter"
xmlns:server_utils="ru.bitel.bgbilling.server.util.ServerUtils"
version="1.0">

<xalan:component prefix="st" functions="summaToString">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.bill.bean.SummaToString"/>
</xalan:component>
<xalan:component prefix="counter" functions="add set get">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.Counter"/>
</xalan:component>
<xalan:component prefix="server_utils" functions="replace">
<xalan:script lang="javaclass" src="xalan://ru.bitel.bgbilling.server.util.ServerUtils"/>
</xalan:component>
<xsl:output encoding="UTF-8" method='text' indent='yes' />


<xsl:template match="data">
<xsl:apply-templates select="bill" />
</xsl:template>
<xsl:variable name="fio" select="/data/bill/contract_params/parameter[@pid='1']/@value"/>
<xsl:variable name="address" select="/data/bill/contract_params/parameter[@pid='15']/@value"/>
<xsl:variable name="phone" select="/data/bill/contract_params/parameter[@pid='21']/@value"/>
<xsl:variable name="dolg" select="format-number(/data/bill/@saldo_prev, '0.00')"/>
<xsl:variable name="itogo" select="format-number(/data/bill/@total_sum,'0.00')"/>
<xsl:template match="bill">
<xsl:value-of select="$fio"/>;<xsl:value-of select="$address"/>;<xsl:value-of select="@bill_number"/>;<xsl:value-of select="@type_title"/>;<xsl:value-of select="server_utils:replace($phone,';',',')"/>;<xsl:value-of select="@date"/>;<xsl:value-of select="$dolg"/>;<xsl:call-template name="positions"/> <xsl:value-of select="$itogo"/>;
</xsl:template>
<xsl:template name="positions">
<xsl:for-each select="pos"> <xsl:value-of select="@summ"/>;</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

Автор:  ok-2004 [ 04 сен 2014, 17:50 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

locale -a:

C
C.UTF-8
en_US.utf8
POSIX
ru_RU.utf8

добавил в server.sh

export LC_ALL=ru_RU.UTF-8

не помогает, блин,

может в COMMON_PARAMS чо добавить надо ?

Автор:  dimOn [ 04 сен 2014, 17:56 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

можете в HD написать?

Автор:  ok-2004 [ 04 сен 2014, 18:09 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

да, придётся...

Автор:  dimOn [ 09 сен 2014, 13:37 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

исправлено

Автор:  ok-2004 [ 10 сен 2014, 12:04 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

Да, реестр выгрузился, во всяком случае на win8.1 русские быквы увиделись, на юбуне попрежнему кракозябры, но это я связываю с проблемами юбунты.
Самое смешное, что если выгрузить реестр прямо на сервер БЖБ, у которого :

locale -a:

C
C.UTF-8
en_US.utf8
POSIX
ru_RU.utf8

и текущая локаль для рута:

locale:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

то на нём :

cat /tmp/preempt.csv
;;00000002;Счет за интернет;;31.08.2014;-4000.00;2000.00;2000.00;
(т.е. русские буквы видны...)
Ну вобщем бухгалтер доволен, а это главное ( у него win... )


P.S.

есть сомнения насчёт корректности строки в скрипте запуска сервера:
#!/bin/sh
export LC_ALL=ru_RU.UTF-8
.....
Возможно ru_RU.UTF-8 надо как-то вставлять в COMMON_PARAMS= или в PARAMS=, но я в етом как гриться не "копенгаген"...
Вообщем даже с английской локалью на сервере реестр выгружается правильно, и даже название месяца в счетах и счёт-фактурах пишется по русски а не по английски...

Автор:  dimOn [ 10 сен 2014, 13:17 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

по идее клиент вообще никакого значения не имеет.
туда приходит строка внутри обычной data-xml полностью сформированная на сервере, на клиенте ничего не делается вообще, только пишется в файл и всё.
выгрузка в файл в 6.0 делается в cp1251 (если не настроен другой bgbilling.transfer.encoding но это вряд ли), начиная с 6.1 делается жёстко в utf-8.

Автор:  dimOn [ 10 сен 2014, 13:20 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

покажите файл который вы не можете открыть в убунте. он полностью побитый, или может вы просто кодировку там не ту выбираете (файл в cp1251 надо открывать)?

Автор:  ok-2004 [ 10 сен 2014, 14:02 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

да всё правильно, в кодировке ansi-1251 открылся в libreoffice calc
хотя:
file preempt.csv
пишет что он в ISO-8859 text
поэтому походу такая свистопляска...

cat его видет вот так :

;;00000002;���� �� ��������;;31.08.2014;-4000.00;2000.00;2000.00;

Автор:  dimOn [ 10 сен 2014, 14:45 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

да не смотрите вы на этот file, он никак не может определить в какой именно кодировке текстовый файл, т.к. очевидно это невозможно в общем случае.
в 6.0 файл выгружается в cp1251, а линуксы дефолтно думают что utf-8, потому если явно не указывать, то понять кодировку они никак не смогут
Цитата:
;;00000002;���� �� ��������;;31.08.2014;-4000.00;2000.00;2000.00;

ну выглядит что всё нормально (как однобайтовый текст в попытке представить его как utf-8), если у вас локаль в системе utf-8

так что считаем, что проблема решена
вот в 6.1 когда обновитесь в винде наверно с utf-8 будут вопросы в свою очередь точно такие же. потому что винда наверно 1251 будет по дефолту ожидать.

Автор:  JIoIIIaDka [ 03 фев 2017, 14:51 ]
Заголовок сообщения:  Re: "Кракозябры" в реестре счетов

-Dfile.encoding=UTF-8 ?

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/