command.php 625줄 utf-8 설정으로 인한 인코딩 충돌. 한글깨짐 문제
본문
안녕하세요.
제가 이번에 스쿨호스팅에 있는 PHP 버전을 7으로 올렸는데요.
그 이후에 에러가 나는것을 잡아 고치고 있습니다.
버전업 되면서 mysql_query 이런게 안되서 mysqli_query를 쓰거나, 그누 함수 sql_query로 변경하여 문제를 해결했는데...
그누보드 게시판은 정상적으로 나오는데 제가 별도로 만든 페이지의 한글이 깨지더라고요..
별도의 페이지에 아래와 같이 해주고.. 저장할때 ANSI로 저장하고 해도 한글이 깨지는겁니다.
-----------------------------------------------------------------------------------------------------
<?php
header('Content-Type: text/html; charset=euc-kr');
define('__GNU__',true);
include_once("./_common.php"); // _common.php 에는 여러 가지 함수들이 들어 있습니다. 그누보드4를 사용하는 경우 반드시 들어있어야 하는 코드입니다.
?>
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="EUC-KR">
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
<body>
할글 뷀
</body>
</html>
-----------------------------------------------------------------------------------------------------
익스플로러에서 F12 개발자 도구에 들어가서 보면
HTML1114: (HTTP 헤더)의 코드 페이지 utf-8이(가) 충돌하는 (메타 태그)의 코드 페이지 euc-kr을(를) 무시합니다.
이런 에러가 나옵니다.
이것 저것 바꿔보고 해도 안되서, 위에 에러에 힌트를 얻어.... 찾다가 보니
/command.php 안에 625줄을 확인하니까.
header('Content-Type: text/html; charset=utf-8');
이렇게 되어있네요.
이것을 주석처리하니까. 정상적으로 euc-kr 페이지와, utf-8 페이지의 한글이 모두 잘 나오는것을 확인 했습니다.
그누보드에서 만든 소스에는 손을 안데고 싶은데... 제가 하는 방법이 맞는건가요?
아니면, 이렇게 하면, 다른 문제가 발생하는것인가요?
질문의 요약은
한글깨짐문제를 해결하기 위해 command.php 625줄을 주석처리해도 문제가 없는지 입니다.
답변 6
아마도 헤더를 중복전송해서 그런것 같습니다.
헤더에 대해서 중첩으로 인식되면 브라우저에서 오류를 발생합니다.
header ()
를 처리할때 직접처리하지마시고
가급적
common.php
속에 있는 header 에서 파일에따라 분기를 추가하는게 더 낫지 않겠나 생각됩니다.
한 프로젝트 안에 인코딩을 혼용해 사용하지 않도록 구성하는 방법이 더 맞지 않나 싶습니다.
<meta charset="EUC-KR">
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
를 사용하면 안됩니다.
그누보드5는 utf-8 기반이고, 모바일 또한 utf-8 기반이어야 합니다.
ANSI 도 euc-kr 도 사용하지 말고, utf-8 하나로만 사용하는것이 좋습니다.
command.php 파일은 어디 폴더 안에 있나요?
좋은 답변 감사합니다
답변 감사드립니다.
왜 제가 두가지를 혼용하냐면 그누보드는 utf-8인데..
다른 개별페이지를 만들고 이건 오라클DB를 사용하는데.. 오라클이 ansi로 되어있어서...
개별페이지를 ansi로 만들었습니다.
개별페이지도 utf-8로 만들면, 오라클DB에 쿼리 날릴때, iconv 써서 보내고...
결과값도 한글이 있는 데이타는 다시 iconv로 변환해서 뿌려줘야 하기 때문에 그랬던 거거든요...