파일 인코딩 변경 문의
본문
안녕하세요? 고수 여러분! 다름이 아니오라 질문하나 하고자 글 끄적여 봅니다.
아래 소스는 영상 자막 입니다.
이 자막 파일 인코딩이 utf-8으로 되어있어야 정상적으로 표현 됩니다.
참고소스는 아래 소스의 인코딩은 UCS-2 LE 인데 utf-8으로 변환해야 정상적으로 자막이 표시 됩니다.
!-->!-->
아래 소스는 영상 자막 입니다.
이 자막 파일 인코딩이 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
질문을 모르겠네요 ㄷㄷ
그래서 질문이 요건이 무엇인지요?
소스의 인코딩은 UCS-2 LE 인데 <-- 그런데 EUC-KR 이니 ASCII 같은게 왜 나오나요?
mb_convert_encoding($Lines, 'UTF-8', 'UCS-2LE');
답변을 작성하시기 전에 로그인 해주세요.