Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / PHP под линукс и каше / 13 сообщений из 13, страница 1 из 1
22.03.2010, 10:31
    #36533939
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
PHP 5.2.6 (UTF8)
Linux 2.6.26-2-68 (вроде Debian)
ODBC драйвер каше под линус
Каше сервер под виндовс

Наши специалисты не могут подружить, при передаче в PHP
непонятная кодировка, причем через раз разная.
Это вообще возможно их подружить? Какие грабли?
...
Рейтинг: 0 / 0
22.03.2010, 10:53
    #36533990
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
Хм... недавно пришлось с этим биться. Вот пара "заметок на полях":

Установка локали CP1251
Надо сказать, что результирующий набор, возвращаемый Cache ODBC, всегда в кодировке CP1251 (вне зависимости от 8-битности экземпляра Cache). По крайней мере, я не знаю как это изменить (да и надо ли?). Поэтому надо установить в Linux соответствующую локаль. Например, в Ubuntu 9.10 это делается так:

sudo locale-gen ru_RU.CP1251
locale -a | grep 1251

в списке локалей появятся:

ru_RU.cp1251

В RedHat-подобных дистрибутивах (проверено в FC 8, CentOS 5.x) локаль устанавливается так:

sudo localedef --no-archive -c -f CP1251 -i ru_RU ru_RU.CP1251

Проверка наличия ru_RU.cp1251 выполняется аналогично:

locale -a | grep 1251

...
Если вы захотите попробовать что-нибудь русское (ну и собственно приступить к разработке :), не забывайте вставить поближе к началу php-кода установку текущей локали CP1251:

echo setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
...
Рейтинг: 0 / 0
23.03.2010, 15:31
    #36537344
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
Спасибо, наши вроде разобрались :-)
Там еще ошибка интересная, что если получаемая строка длиннее чем ее декларация, то все что дальше - заменяется непойми чем.
А так как длина %String по умолчанию равна 50 то с учетом перекодировки в UTF8 реальная длина передаваемой строки получалась 25-50.
Решили тем, что поставили MAXLEN побольше, вроде работает.
...
Рейтинг: 0 / 0
23.03.2010, 15:44
    #36537379
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
На эти грабли и у нас наступили. Наверное, на них наступают все, кто начинает работать с Cache ODBC :)
...
Рейтинг: 0 / 0
23.03.2010, 15:48
    #36537395
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
с учетом перекодировки в UTF8 Вы научились отдавать ResultSet в UTF-8? Я не нашел, как это сделать, кроме тупого варианта - написать Custom Query и закодировать все самому.
...
Рейтинг: 0 / 0
23.03.2010, 15:59
    #36537440
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
Мне показалось, это у них по умолчанию получилось, хотя никаких настроек кодировки в ODBC-драйвере не было.

Хотя я сам этим не занимался, переспрошу, как было дело.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
12.04.2011, 17:44
    #37212573
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
Блок А.Н. , Вы всех заинтриговали, а сами не рассказываете как получать из каше UTF-8 напрямую.
...
Рейтинг: 0 / 0
12.04.2011, 19:01
    #37212780
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
Вроде как у нас проблемы были не с самой кодировкой, а с обрезкой строк.
...
Рейтинг: 0 / 0
12.04.2011, 19:18
    #37212810
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
Блок А.Н.Вроде как у нас проблемы были не с самой кодировкой, а с обрезкой строк.
Какими настройками добились получения utf-8? или iconv захардкодили?
...
Рейтинг: 0 / 0
12.04.2011, 19:21
    #37212815
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
По-моему, как для сервера utf-8 была родной кодировкой, вот в ней оно и работало :-)
Я перешлю ссылку разработчику, который этим занимался, может ответит.
...
Рейтинг: 0 / 0
13.04.2011, 05:44
    #37213276
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
авторУ сервера родная кодировка utf-8, после вызова функции odbc_connect вызывается функция setlocale(LC_ALL, 'ru_RU.UTF-8 '); и далее данные из запросов приходят в utf-8
у нас так и для select и для insert работает. от нас везде все в utf а конвертация идет уже по пути в вашу базу данных
...
Рейтинг: 0 / 0
24.05.2011, 14:03
    #37276601
kalin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
Все просто
В cache в OnPage() генерим xml файл вида
w "<?xml version='1.0' encoding='utf-8'?>",!
w $zcvt($zcvt("Мой текст","O","UTF8"),"O","HTML") ; исходный текст в win1251

Не забываем ContentType="text/xml"
...
Рейтинг: 0 / 0
24.05.2011, 14:05
    #37276606
kalin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP под линукс и каше
В PHP загружаем например так

$xml = @simplexml_load_file($urlpath .'Page.class.cls?CSPCHD='.$sessionCSP.'&id='.$id);
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / PHP под линукс и каше / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]