파일에 한글로 기록을 한 뒤 기록을 보면 한글이 깨져있습니다.
본문
기초가 없으니 이런게 늘 문제네요
파일에 한글로 기록을 한 뒤 기록을 보면 한글이 깨져있습니다.
그래서 아래 코드로 테스트를 해보니 두가지 문제가 ...
<?php
echo $str = "테스트". date("Y-m-d H:i:s")."\n";
$f = fopen('utf8.txt' , 'a' ) ;
fwrite($f, iconv( 'EUC-KR' ,'UTF-8' ,"UTF-8".$str) );
fwrite($f, "default".$str);
fclose( $f ) ;
?>
<a href="utf8.txt" >보기</a>
위 코드를 실행한후
1. 보기를 클릭해보면 아래처럼 깨져서 보입니다.
default�뚯뒪��2022-10-10 04:09:02
2. fwrite($f, iconv( 'EUC-KR' ,'UTF-8' ,"UTF-8".$str) ); 이코드로는 데이타를 쓰질 못하네요
!-->
답변 6
서버( 올린 파일) character set은 무엇이고
파일에 저장할 character set은
원하시는 것이 어떻게 되나요?
utf-8 인코딩을 사용하려면
파일의 저장 인코딩
파일이 웹브라우저에 내보내질때의 헤더 인코딩
모두 utf-8 하나로 통일해보세요
<?php
// header('Content-Type: text/html; charset=EUC-KR');
header('Content-Type: text/html; charset=UTF-8');
echo $str = "테스트". date("Y-m-d H:i:s")."\n";
$f = fopen('aa/utf8.txt' , 'a' ) ;
fwrite($f, iconv( 'EUC-KR' ,'UTF-8' ,"UTF-8".$str) );
fwrite($f, "default".$str);
fclose( $f ) ;
?>
<a href="aa/utf8.txt" >보기</a>
- '보기' 말고 그냥 바로 출력되는 부분도 깨지나요?
- t.php 파일의 저장 인코딩은 확인 하신건가요?
클릭시 txt 파일을 브라우저에서 출력해주는 부분은
각 기본 혹은 마임타입에 따라 웹서버 응답 인코딩 설정이 어떤가도 확인이 필요힙니다.
아니면 기본 EUC-KR 환경인것 같은데
UTF-8 부분을 모두 제거하고 EUC-KR 인코딩 형태로만 동작하게 확인도 해보세요
* 사진은
결과1 (t.php 실행)
결과2 (보기클릭)
소스 에디터
위 세개 창을 한개 이미지로 편집했습니다.
* 에디터 아래에 UTF-8 이렇게 써있으면 맞는건가요?
* 이제보니 시간이 오후4시인데 09시로 나오네요.. 뭔가 한글 깨지는거랑 관련이 있는가요?
iconv() 빼고
그냥 fwrite() 해 보세요.
위 코드를 실행한후
1. 보기를 클릭해보면 아래처럼 깨져서 보입니다
==
어떤 브라우저를 쓰셨나요?
IE 같은 경우 가끔 utf8을 euc-kr 로 인식하는 경우가 있습니 다.