2014-04-01 4 views
-1

export.php에있는 csv 함수로 내보냈습니다. 이 함수는 정상적으로 작동합니다. 일본어 문자 표시가 다음과 같이 표시됩니다. ‰ ª à ÑÊΠà "Åø 페이지 및 CSV 파일의 변수를 에코 할 때도 마찬가지입니다.내 export.php에서 일본어 문자가 왜곡됩니다.

charset은 이미 UTF-8 형식입니다. 다른 페이지에서도 잘 표시됩니다. 다음에해야 할 일을 알지 못합니다.

다음
public function excel() 
{ 
    $student_id = $_GET['student_id']; 
    $lesson = &Chico::getInstance('Controller_Frontend_Lesson'); 
    $defaults = &Chico::getInstance('Model_Defaults'); 
    $get_lesson_history = $lesson->lesson_history(get_user_meta($student_id, 'gge_access_token', true)); 
    $convert_lesson_time = $lesson->convert_lesson_time($get_lesson_history); 
    $lesson_history = $lesson->sort_history($convert_lesson_time); 
    $count = 1; $lesson_count = $this->get_lesson_count($lesson_history); 

    header('Content-Type: text/csv;charset=utf-8'); 
    header(sprintf('Content-Disposition: attachment;Filename=%s.csv', get_user_meta($student_id, 'gge_name', true))); 

    $outstr = sprintf('PERIOD, %s ~ %s %s', !empty($_GET['begin']) ? $_GET['begin'] : 'Beginning', !empty($_GET['end']) ? $_GET['end'] : 'Present', "\n"); 
    $outstr .= sprintf('STUDENT NAME, %s %s', get_user_meta($student_id, 'gge_name', true), "\n"); 
    $outstr .= sprintf('SKYPE ID, %s %s', get_user_meta($student_id, 'gge_skype', true), "\n"); 
    $outstr .= sprintf('NUMBER OF BOOKINGS, %s %s', $lesson_count, "\n"); 
    $outstr .= sprintf('NUMBER OF LESSONS, %s %s', $lesson_count, "\n\n"); 

    $outstr .= '#, DATE/TIME, TEACHER, STATUS, LESSON, REQUEST, COMMENT'; 
    $outstr .= sprintf('%s', "\n"); 

    if(!empty($lesson_history) && is_array($lesson_history)): 
     foreach ($lesson_history as $key => $value) { 
      $lastkey = count($value)-1; 
      $launched = strtotime($value[$lastkey]['launched']); 
      $datetime = sprintf('%s %2$s:00 ~ %2$s:50', date(__(get_option('date_format')), $launched), date(__('H'), $launched)); 
      if(strtotime($_GET['begin']) <= $launched && strtotime(sprintf('%s+1 days', $_GET['end'])) >= $launched): 
       $outstr.= join(',', array($count, $datetime, 
              $value[$lastkey]['teacher_name'], 
              $defaults::$status_ja[$value[$lastkey]['status']], 
              $value[$lastkey]['request_title'], 
              $value[$lastkey]['request_body'], 
              $value[$lastkey]['scores']['message'])); 
       $outstr .= sprintf('%s', "\n"); 
       $count++; 
      endif; 
     } 
    else: 
      $outstr.= join(',', 'No lesson history'); 
    endif; 
    echo $outstr; 
} 

는 CSV의 데이터입니다 : 여기

내 코드의 상태 LESSON 새미 ‰ ∫àÁ ¥ ÑÊΠà "AO KREAN ‰ ∫àÁ ¥ ÑÊΠà"AO

+0

어디서 어떻게 나타나는지에 대한 자세한 정보를 제공해주십시오. Excel에서 파일을 여는 중입니까? 헤더를 설정 했습니까? – deceze

+0

헤더'header ('Content-Type : text/csv; charset = utf-8')를 출력 해보십시오. ' – iamsleepy

+0

안녕하세요 @ iamsleepy, 나는 여전히 동일하게 노력했습니다. –

답변

2

Excel은 기본적으로 windows-1252 인코딩을 사용하여 CSV 파일을 엽니 다. 텍스트 편집기 나 Open Office (문자 세트를 선택할 수 있음)로 CSV 파일을 열어보십시오.

+1

우분투를 사용하고 libre office에서 csv 파일을 여는 중입니다. 문자 집합에 대한 옵션을 알지 못했습니다. 그것은 서양으로 설정되었습니다. T___T 나는 바뀌었고 이제는 효과가있다. 아리가 투 가자 마스! –

관련 문제