Изменить кодировку при выводе результата

Тема в разделе "Как сделать...", создана пользователем Ardis, 7 фев 2011.

  1. Ardis

    Ardis

    Регистр.:
    26 мар 2008
    Сообщения:
    196
    Симпатии:
    40
    Скрипт качает файл тхт, обрабатывает его и выводит результат, но не в той кодировке) нужна ютф-8. можно как то с помощью iconv. но я не силен в пхп.
    PHP:
    <?php
    class topsms extends Controller {

    var 
    $data         =    array ();
    var 
    $is_logged    =    false;
    var 
    $AccountSerial=0;
    var 
    $master_answer=    false;

        function 
    topsms()
        {
            
    parent::Controller();
            
    $this->load->helper(array(
                
    'fdcore_framework',
                
    'office_framework',
                
    'rf_framework_helper',
                ));
            
    $this->load->helper(array('language','url','security','form','html','pay','date'));
            
    $this->load->library(array('session','parser','table','ajax'));
            
    $this->lang->load('office'get_lang());
            
    $this->login=xss_clean($this->session->userdata('login'));
            
    RunFunc('connectdb|connectmydb|check_offline|check_sql_inject');
            
    $this->output->enable_profiler(config('profiler','core'));
        }

        function 
    index()
        {
            
    $world get_world();
            
            
    $this->data['title']='Òîï ãîëîñîâ çà ñìñ';
            
            include( 
    APPPATH "config/mmotop.php" );

            
    $all_data=file_get_contents($config['logfile']);
            
            
    $rows       =   explode("\n",$all_data);
            
            
    $chars=array();
            
            foreach(
    $rows as $row){
                
                
    $cols=explode("\t",$row);
            
                if(isset(
    $cols[3]) && $cols[3]!==''){
                
                   if(
    $cols[4]==2$chars[]=$cols[3];
                   
                }
                
                
            }
            
            
    $top=array_count_values($chars);
            
    arsort($top);
            
            
    $i=1;
            
            
    $this->table->set_heading('#','Èìÿ ïåðñîíàæà');
            
            foreach(
    $top as $key=>$value){
            
                 
    $this->table->add_row($i,$key);
                
    $i++;
                if(
    $i 99) break;
                
            }        
            
            
    $this->data['content']=$this->table->generate();
            
    compile('',false);
        }


    }
     
  2. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    а что тут непонятного то ??

    PHP:
    $text_perem iconv("WIN-1251""UTF-8"$text_perem);
    WIN-1251 - кодировка в которой находятся данные
    UTF-8 - кодировка в которую надо переконвертить

    а привёл ты код чисто функций в них ни чтения файла ни вывода нет.
     
  3. Ardis

    Ardis

    Регистр.:
    26 мар 2008
    Сообщения:
    196
    Симпатии:
    40
    Message: iconv() [function.iconv]: Wrong charset, conversion from `WIN-1251' to `UTF-8' is not allowed

    я не особо шарю в пхп :confused:
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.183
    Так правильнее:
    PHP:
    $text_perem iconv("windows-1251""UTF-8"$text_perem); 
    PS Если в PHP плохо шаришь зачем постить в раздел PHP Pro?
    PPS Если будут проблемы с определением кодировки, смотри тему https://nulled.cc/showthread.php?t=198585
     
  5. Cleric5

    Cleric5 Постоялец

    Регистр.:
    8 апр 2008
    Сообщения:
    81
    Симпатии:
    10
    Код:
    $text = iconv('windows-1251','utf-8', $text);
    однако при условии, что iconv включено, если нет, то роем в сторону штакцесс или подобного
     
  6. GEEPERS

    GEEPERS

    Регистр.:
    26 янв 2008
    Сообщения:
    162
    Симпатии:
    25
    Правильнее
    PHP:
    $text_perem iconv("cp1251""UTF-8"$text_perem); 
    Хотя на входе кодировка может быть не cp1251, поэтому не получается.