한글이 PC에 따라 깨짐현상이 있습니다.
본문
안녕하세요, Form 에서 입력받아 값을 패스하여 SQL 쿼리를 실행하는 간단한 php 프로그램을 만들었는데, PC 에 따라 깨지는 경우가 생깁니다. IE를 사용해서 테스트를 했는데 이런현상이 나타납니다.
즉, name 을 "홍길동" 으로 받아 srch_name.php 를 콜해서 srch_name.php 에서 $name 값을 사용했습니다.
메타값에 charcter set 을 utf-8 로 했습니다.
$a = iconv("EUC-K","UTF-8", $name) 을 사용해서 해결했나 싶었는데, 다른 PC에서는 깨집니다.
깨지는 PC에서는 iconv 를 사용하지 않고 단순히 $a = $name 을 사용하면 제대로 보입니다. (이 경우 iconv 함수를 사용한 PC는 글씨가 깨지구요..ㅠㅠ)
어느 세팅을 바꾸어야 해결이 될까요?
가르침 미리 감사드립니다.
오늘도 좋은하루되세요.
답변 5
gen_srch.xls.php 화일 자체를 utf-8형식으로 저장
이 화일에 <meta charset="UTF-8"
>
설정은 필요없음
_common 앞쪽에 저렇게 head가 들어가면 안됨
메타태그로 인코딩을 지정해보셨나요?
<head>
<meta charset="UTF-8">
</head>
흠.. 아무래도 인코딩이 잘못된거 같은데.. 익스플로러메뉴 중 보기 -> 인코딩 에서 두 컴퓨터의 차이점이 있나
확인해보세요. 테스트페이지라도 있으면 금방 풀릴거 같은데.. 흠..
<!-- 게시판 검색 시작 { -->
<div class="tbl_head01 tbl_wrap">
<table>
<tr>
<td>
<form name="fsrch" id="fsrch" action="<?php echo $action_url ?>" onsubmit="return fsrch_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:<?php echo $width; ?>">
<input type="hidden" name="myname" id="myname1" value="<?php echo $member['mb_name'] ?>">
<input type="hidden" name="mylevel" id="mylevel1" value="<?php echo $member['mb_level'] ?>">
과정: <input type="text" name="ban1" value="<?php echo $ban1 ?>" id="ban1" class="frm_input" size="4" maxlength="4">
학생: <input type="text" name="std1" value="<?php echo $std1 ?>" id="std1" class="frm_input" size="6" maxlength="10">
교사: <input type="text" name="tch1" value="<?php echo $tch1 ?>" id="tch1" class="frm_input" size="5" maxlength="10">
시작일: <input type="text" name="sdt1" value="<?php echo $sdt1 ?>" id="sdt1" class="frm_input" size="10" maxlength="10">
마감일: <input type="text" name="edt1" value="<?php echo $edt1 ?>" id="edt1" class="frm_input" size="10" maxlength="10"> (yyyy.mm.dd)
<input type="submit" value="수업일지조회" class="btn_submit">
</form>
</td>
</tr>
</table>
</div>
<!-- } 게시판 검색 끝 -->
<!-- gen_srch.xls.php 를 콜하는 부분 -->
<script type="text/javascript">
function fsrch_submit(f)
{
var f = document.fboardlist;
var sdt = document.getElementById('sdt1').value;
var edt = document.getElementById('edt1').value;
var tch = document.getElementById('tch1').value;
var std = document.getElementById('std1').value;
var ban = document.getElementById('ban1').value;
var myname = document.getElementById('myname1').value;
var mylevel = document.getElementById('mylevel1').value;
var stract = "./gen_srch.xls.php?bo_table=logbook";
var str1 = "&sdt="+sdt;
var str2 = "&edt="+edt;
var str3 = "&tch="+tch;
var str4 = "&std="+std;
var str5 = "&ban="+ban;
var str6 = "&myname="+myname;
var str7 = "&mylevel="+mylevel;
// f.sw.value = "xls";
// f.target = "xls";
stract = "./gen_srch.xls.php?bo_table=logbook"+str1 + str2 + str3 + str4 + str5 + str6 + str7;
window.open(stract, "LIST", "left=50, top=50, width=700, height=550, scrollbars=1");
// f.action = stract
// f.submit();
}
<!-- gen_srch.xls.php -->
문제를 해결해볼려고 iconv 함수를 사용해보기도 했습니다.
<head>
<meta charset="utf-8">
</head>
<?
include_once("./_common.php");
$today = date("Y-m-d");
$flg = 0;
$cond0 = "select * from {$write_table} ";
if ($mylevel > 4) {
if (strlen($tch) > 1) {
// $cond1 = iconv("EUC-KR","UTF-8"," where wr_name = '{$tch}' ");
$cond1 = " where wr_name = '{$tch}' ";
$flg = 1;
}
else { $cond1 = ""; }
}
else {
// $cond1 = iconv("EUC-KR","UTF-8"," where wr_name = '{$myname}' ");
$cond1 = " where wr_name = '{$myname}' ";
$flg = 1;
}
if (strlen($std) > 1) {
// if ($flg == 1) { $cond2 = iconv("EUC-KR","UTF-8"," and wr_subject = '{$std}' "); }
// else { $cond2 = iconv("EUC-KR","UTF-8"," where wr_subject = '{$std}' "); }
if ($flg == 1) { $cond2 = " and wr_subject = '{$std}' "; }
else { $cond2 = " where wr_subject = '{$std}' "; }
$flg = 1;
}
else { $cond2 = ""; }
if (strlen($ban) > 1) {
// if ($flg == 1) { $cond3 = iconv("EUC-KR","UTF-8"," and wr_2 = '{$ban}' "); }
// else { $cond3 = iconv("EUC-KR","UTF-8"," where wr_2 = '{$ban}' "); }
if ($flg == 1) { $cond3 = " and wr_2 = '{$ban}' "; }
else { $cond3 = " where wr_2 = '{$ban}' "; }
$flg = 1;
}
else { $cond3 = ""; }
if (strlen($sdt) > 1) {
// if ($flg == 1) { $cond4 = iconv("EUC-KR","UTF-8"," and wr_5 >= '{$sdt}' "); }
// else { $cond4 = iconv("EUC-KR","UTF-8"," where wr_5 >= '{$sdt}' "); }
if ($flg == 1) { $cond4 = " and wr_5 >= '{$sdt}' "; }
else { $cond4 = " where wr_5 >= '{$sdt}' "; }
$flg = 1;
}
else { $cond4 = ""; }
if (strlen($edt) > 1) {
// if ($flg == 1) { $cond5 = iconv("EUC-KR","UTF-8"," and wr_5 <= '{$edt}' "); }
// else { $cond5 = iconv("EUC-KR","UTF-8"," where wr_5 <= '{$edt}' "); }
if ($flg == 1) { $cond5 = " and wr_5 <= '{$edt}' "; }
else { $cond5 = " where wr_5 <= '{$edt}' "; }
$flg = 1;
}
else { $cond5 = ""; }
$cond = $cond0 . $cond1 . $cond2 . $cond3. $cond4. $cond5. " order by wr_subject, wr_5 desc;";
echo "<$cond1>$cond2<$cond3>$cond4<$cond5><br>";
echo "<br>";
// $sql = "select * from {$write_table} where wr_10 = '0' and wr_5 >= '{$sdt}' and wr_5 <= '{$edt}' order by wr_name, wr_subject";
// $sql = "select * from {$write_table} where wr_5 >= '{$sdt}' and wr_5 <= '{$edt}' order by wr_name, wr_subject";
$ii = 1;
$row = mysql_query($cond);
?>
<b>수업일지조회  <?php echo "($sdt ~ $edt)" ?></b><br>
<table border=1 width=100%>
<tr>
<td width=7% align=center>#</td>
<td width=10% align=center>과정</td>
<td width=10% align=center>학생</td>
<td width=13% align=center>교사</td>
<td width=15% align=center>수업일</td>
<td width=10% align=center>그룹</td>
<td width=10% align=center>OT</td>
<td width=15% align=center>입력일</td>
<td width=10% align=center>ID</td>
</tr>
<?
while ($rcd = mysql_fetch_array($row)) {
?>
<tr>
<td align=center><?php echo $ii; ?></td>
<td align=center><?php echo $rcd[wr_2]; ?></td>
<td align=center><?php echo $rcd[wr_subject]; ?></td>
<td align=center><?php echo $rcd[wr_name]; ?></td>
<td align=center><?php echo $rcd[wr_5]; ?></td>
<td align=center><?php echo $rcd[wr_3]; ?></td>
<td align=center><?php echo $rcd[wr_4]; ?></td>
<td align=center><?php echo substr($rcd[wr_datetime],0,10); ?></td>
<td align=center><?php echo $rcd[wr_id]; ?></td>
</tr>
<?
$ii = $ii + 1;
}
?>
</table>