За последние 24 часа нас посетили 17382 программиста и 1630 роботов. Сейчас ищут 1766 программистов ...

Кодировка-Прочитать DOS текстовый файл.

Тема в разделе "PHP для новичков", создана пользователем sknmrz, 12 фев 2010.

  1. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    Искал по форуму про кодировки но там нет про DOS тексты. Пробовал по разному, не полчается отобразить нормально, все выводится в кракозябрах.
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
  3. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    Спасибо но мне помогло convert_cyr_string($s, 'w', 'a'), пробовал так же convert_cyr_string($s, 'w', 'd') но тексте выводится с некоторыми ошибками, напроимер слово Услуги так-Lслуги. Символ № и заглавные не правильно выводятся.
    Если точнее надо считать данные из DBF таблиц. Там они как раз хранятся в DOS кодировках.
     
  4. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    Может PHP корректно конвертировать DOS>Win?
     
  5. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    дайте пример того, что у вас некорректно конвертируется.
     
  6. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    http://slil.ru/28644603 (50 кб), поле descr. Эта DBF это 1С 7.7 файл, где хранится номенклатура. Можно через ODBC foxpro, тогда все отображается правильно, но желательно именно через конвертацию-iconv или convert_cyr_string.
     
  7. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    вы дайте кусочек текста, который не так конвертируется. например, "съешь ещё этих французских ..."
     
  8. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    Напр. 1. Как есть 2. Как выводится через iconv('cp1251','CP866', $s)
    1.покраска а/м Мазда 626 заказ № 1055
    2.покраска а/м

    1.покраска а/м ВАЗ 2105
    2.покраска а/м TL
     
  9. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    Вот код - dd (можно дать любое имя, но в коде тоже нужно будет поменять) это ODBC dbf. Создается через Панельуправления-Администрирование-ODBC.

    $odbc = odbc_connect ('dd', '', '') or die('Could Not Connect to ODBC Database!');
    $strsql= "SELECT * FROM SC297.dbf ";
    $query = odbc_exec($odbc, $strsql) or die (odbc_errormsg());
    while($row = odbc_fetch_array($query))
    {
    $s = $row['DESCR']; // В зависимости от выбранного драйвера ODBC иногда нужно писать маленькими буквами - descr
    //$s= convert_cyr_string($s, 'w', 'a') ;
    $s = iconv('cp1251','CP866', $s);
    echo $s;
    }
    odbc_close($odbc);
     
  10. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  11. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    а вы смотрели, что у вас в $s перед преобразованием?

    Код (Text):
    1. D:\>php -r "$f = fopen('cp.txt', 'r'); $s = fgets($f); fclose($f); echo $s . '     ' . iconv('cp1251', 'cp866', $s);"
    2. яюъЁрёър р/ь ╠рчфр 626 чрърч ╣ 1055      покраска а/м Мазда 626 заказ № 1055
     
  12. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    У меня строка такая - яюъЁрёър р/ь ¦рчфр 626 чрърч ¦ 1055. После преобразования - покраска а/м.
     
  13. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    может в настройках что не так?
    phpinfo
    [/code]
     
  14. sknmrz

    sknmrz Активный пользователь

    С нами с:
    5 янв 2010
    Сообщения:
    13
    Симпатии:
    0
    PHP Version 5.2.5
    This program makes use of the Zend Scripting Language Engine:
    Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
    with Xdebug v2.0.2, Copyright (c) 2002-2007, by Derick Rethans

    iconv support enabled
    iconv implementation "libiconv"
    iconv library version 1.9

    Directive Local Value Master Value
    iconv.input_encoding ISO-8859-1 ISO-8859-1
    iconv.internal_encoding ISO-8859-1 ISO-8859-1
    iconv.output_encoding ISO-8859-1 ISO-8859-1

    Вроде и настройки такие же...Непойму в чем дело.
     
  15. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    обновите пхп, может поможет.

    еще можно попробовать поискать на bugs.php.net для вашей версии пхп.
     
  16. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    гм а что за ¦ ?

    "яюъЁрёър р/ь ¦рчфр 626 чрърч ¦ 1055" !== "яюъЁрёър р/ь ╠рчфр 626 чрърч ╣ 1055"
    то есть
    "покраска а/м ¦азда 626 заказ ¦ 1055" !== "покраска а/м Мазда 626 заказ № 1055"

    вот и спотыкается на первом странном символе