Парсинг из xls файла и вставка в БД. Проблемы с кодировкой.

Discussion in 'PHP' started by Edward, 26 Nov 2011.

  1. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    Здравствуйте, ребят прошу помощи, у меня такая проблема.

    Создаю файл test.xls, в котором на русском языке заполняю некоторые строки, а так же заполняю цифрами, английскими словами. С помощью PHP скрипта я достаю строки из xls файла и вставляю в БД. Но проблема с кодировкой. В БД вообще на месте русского текста он отсутствует, а английский и цифры вставляются. На страницы же русский текст выводится таким образом: "�������� ���".

    В какой кодировке текст в xls файле я не знаю. В БД же кодировка UTF - 8. Пробовал после доставания строки из БД конвертировать ее такой функцией mb_convert_encoding( $data[$i][1],'windows-1251','utf-8'), но не получается. Прошу помощи, как это можно решить ?
     
  2. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    А не пробовал при чтении xls файла конвертировать?
     
  3. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    Неа, я вообще использую сторонний модуль, и как он работает хз, если только это выход,что полезть и там конвертировать, то придется лезть, иначе варианты есть ?

    Вот как я использую этот класс:

    PHP:
    // Создаем массив данных из Exel 
    $data_arr = new PHPExcel_xls
    $data $data_arr->xls_array$file );
     
  4. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    У меня подозрение что кодировка у xls файла win-1251, а ты добавляешь в БД, где utf-8.
    На том, шаге, где ты вставляешь в БД, конвертируй строки из win-1251 (ну или смотря какая там) в utf-8
     
  5. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    При вставке в БД пробовал вот таким вот образом:

    PHP:
    mb_convert_encoding$data[$i][1],'windows-1251','utf-8')
    Не помогает. Мб в xml файле какая - то специфическая кодировка, узнать бы ее точно, что б проверить сработает ли, если эту кодировку поставить в функцию mb_convert_encoding().
     
  6. Doctorrr

    Doctorrr New Member

    Joined:
    9 Nov 2011
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    В PHP есть ф-ция определения кодировки:

    PHP:
    setlocale(LC_CTYPE'ru_RU');
    $s mb_detect_encoding($_REQUEST[$key]);//Определяем кодировку
    $new_key iconv($s'CP1251//TRANSLIT'$_REQUEST[$key]);//Декодируем
    ;) так-то.