파일 인코딩 변경 문의

파일 인코딩 변경 문의

QA

파일 인코딩 변경 문의

본문

안녕하세요? 고수 여러분! 다름이 아니오라 질문하나 하고자 글 끄적여 봅니다.
아래 소스는 영상 자막 입니다.
이 자막 파일 인코딩이 utf-8으로 되어있어야 정상적으로 표현 됩니다.
참고소스는 아래 소스의 인코딩은 UCS-2 LE 인데 utf-8으로 변환해야 정상적으로 자막이 표시 됩니다.

<SAMI>
<HEAD>
<TITLE>Foo</TITLE>
<STYLE TYPE="text/css">
<!--
P { margin-left:8pt; margin-right:8pt; margin-bottom:2pt;
    margin-top:2pt; font-size:14pt; text-align:center;
    font-family:굴림, Arial; font-weight:normal; color:white;
    background-color:black; }
.KRCC { Name:한국어; lang:ko-KR; SAMIType:CC; }
#STDPrn { Name:Standard Print; }
#LargePrn { Name:Large Print; font-size:20pt; }
#SmallPrn { Name:Small Print; font-size:10pt; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1526><P Class=KRCC><font color = 00F7E2>색 잉크가 완성되어<br>기뻐하는 마인
<SYNC Start=1415076><P Class=KRCC>Test
</BODY>
</SAMI>

 


<?php
  ini_set('display_errors', '0');
    header('Content-Type: text/html; charset=UTF-8');
 
    $filepath = "M:/IDC/".urldecode($_GET['path']);
   
  if(!file_exists($filepath)) exit();
 
  $fps = fopen($filepath , "r");
  $line = fgets($fps, filesize($filepath));
  fclose($fps);
   
    $encoding = iconv('EUC-KR','UTF-8',$line)==$line ? 'UTF-8' : 'EUC-KR';    //인코딩 정보 확인
           
  if($encoding == "EUC-KR")
  {
    shell_exec('C:/apache/web/EncodingChanger.exe '.urlencode($filepath));
  }
  //print urldecode($filepath);
   
  $fp = fopen($filepath , "r");
 
    $index = -1;    //행의 개수
    $col_time = 0;    //시간을 담는 행
    $col_text = 1;    //문자를 담는 행
    $text = "";
   
    while(($line = fgets($fp, 4096)) !== false){
     
    //대소문자를 가리지않고 <sync를 찾음
        if(stristr($line , "<sync")){
            $index++;
            $text = "";
            $start = strpos($line , "=")+1;
            $end = strpos($line , ">");
            $time = substr($line , $start , $end-$start);
            if(strchr($time , " ")){
                $time = substr($time ,0, strpos($time , " "));
            }
            $smi[$index][$col_time] = $time;
            $text = strstr($line , ">");
            $smi[$index][$col_text] = substr($text , 1 , strlen($text));
        }else{
            $smi[$index][$col_text] .= $line;
        }
    }
    for($i=0; $i<$index; $i++){
        print "$!".$smi[$i][$col_time]."$/";
     
    $Lines = $smi[$i][$col_text];
     
    $str_encode = mb_detect_encoding($Lines,'UTF-8,EUC-KR,ASCII');
    if(strtoupper($str_encode) != 'UTF-8')
    {
      print mb_convert_encoding($Lines, "UTF-8", $str_encode)."\n";
       
      //print iconv($str_encode , 'UTF-8' , $Lines)."\n";
    }
    else
    {
      print $Lines."\n";
    }
  }
  fclose($fp);
?>

이 질문에 댓글 쓰기 :

답변 3

질문을 모르겠네요 ㄷㄷ

그래서 질문이 요건이 무엇인지요?

먼저 문제셋 관련되어 안내를 드려보면 UTF-8은 가변길이의 문자 변환방식이고. 위에서 언급하신  UCS-2 는  국제 문자 세트(UCS, Universal Character Set, 범용 문자 집합) 로서 2.0 버전이란 뜻입니다.

지금 먼저소스를 보시면 한글형식의 EUC-KR로만 encodeing 하고자하시는 거 같습니다. 따라서 당UCS-2에 호환되는 코드를 찾아보니 ISO-8859-1 정도등이 될수 있습니다.  (ISO-8859-1호환코드라 차이가 날수 있습니다.) 

UCS-2로 되어있다면 문자셋의 정보를 먼저 공부를 해보신후에 해당코드를 변경해보시길 바라겠습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,518 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT