파일에 한글로 기록을 한 뒤 기록을 보면 한글이 깨져있습니다.

파일에 한글로 기록을 한 뒤 기록을 보면 한글이 깨져있습니다.

QA

파일에 한글로 기록을 한 뒤 기록을 보면 한글이 깨져있습니다.

본문

기초가 없으니 이런게 늘 문제네요

 

파일에 한글로 기록을 한 뒤 기록을 보면 한글이 깨져있습니다.

그래서 아래 코드로 테스트를 해보니 두가지 문제가 ...

 


<?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 로 저장하고  브라우저에서 주소/t.php 한 뒤
'보기'를 클릭해보면 깨져서 나옵니다.

기록된것도 "default" 한줄만 기록되고요..

  • '보기' 말고 그냥 바로 출력되는 부분도 깨지나요?
  • t.php 파일의 저장 인코딩은 확인 하신건가요?

클릭시 txt 파일을 브라우저에서 출력해주는 부분은

각 기본 혹은 마임타입에 따라 웹서버 응답 인코딩 설정이 어떤가도 확인이 필요힙니다.

 

아니면 기본 EUC-KR 환경인것 같은데

UTF-8 부분을 모두 제거하고 EUC-KR 인코딩 형태로만 동작하게 확인도 해보세요

 

3732213272_1665385709.8087.png

 

* 사진은 

   결과1 (t.php 실행)

   결과2 (보기클릭)

   소스 에디터

위 세개 창을 한개 이미지로 편집했습니다.

 

* 에디터 아래에 UTF-8 이렇게 써있으면 맞는건가요?

*  이제보니 시간이 오후4시인데 09시로 나오네요.. 뭔가 한글 깨지는거랑 관련이 있는가요?

 

시간대는 인코딩과 전혀 상관 없습니다.
TimeZone 설정을 확인하시면 될것 같고

파일 인코딩은 UTF-8 이 맞네요.
utf8.txt 파일을 편집기로 직접 열어보세요

메모장이나 Notepad++ 에서 깨지지 않고 잘보이면 저장자체는 문제가 없는거고
웹서버 응답 인코딩을 확인하셔야 합니다.

직접열면 제대로 잘 써져있는게 확인됩니다.
응답 인코딩이란건 어찌 확인하나요
타임존 설정은 또 어떻게 확인하고 바꾸나요
그누보드에선 시간이 다 제대로 나오는데 저 파일에서 시간만 저러네요

타임존 설정은 그누관련 파일을 거치지 않았기 때문일거고
그누 타임설정 하는 부분을 참조하시면 됩니다.

응답인코딩은 다음을 참고해보세요.
https://httpd.apache.org/docs/current/en/mod/core.html#adddefaultcharset
OR
https://httpd.apache.org/docs/current/en/mod/mod_mime.html#addcharset
OR
https://httpd.apache.org/docs/current/mod/mod_autoindex.html#indexoptions
OR


<Files ~ "\.txt?$">
     Header set Content-Type "text/html; charset=utf-8"
</Files>

iconv() 빼고

그냥 fwrite() 해 보세요.

위 코드를 실행한후 

1. 보기를 클릭해보면 아래처럼 깨져서 보입니다

==

어떤 브라우저를 쓰셨나요?

IE 같은 경우 가끔 utf8을 euc-kr 로 인식하는 경우가 있습니 다.

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

회원로그인

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