한글이름이 들어간 이미지가 엑박으로 나오는 현상...
클라이언트의 인터넷 익스플로서 설정을 바꾸면 해결되지만, 모든 접속자가 그럴 순 없고, 거의 컴맹이신 분들은 알려줘도 어떻게 할지를 모릅니다. 따라서 사이트 제작자가 이미 잘 보이게끔 해주는게 낫겠죠.
검색을 해보니 이미 몇가지 방법이 있었는데, 대부분 소스를 수정하거나 여러 개의 파일을 수정하는 불편함이 있었습니다.
여기서는 단지 스킨의 view.php 하나만을 고치는 방법으로 해결하는 방법을 소개합니다.
파일 이름이 바뀌지도 않으면서, 다운로드에 문제도 없고, 보는 데도 문제가 없습니다.
더불어, jpg, gif, png 파일만 보이던 것을 bmp 파일도 볼 수 있도록 했습니다.
단, 제가 내용보기 화면에서만 필요했으므로 내용읽기 화면에서만 작동하며, 목록에 함꼐 보이는 그림이나 최근글 보기에 나타나는 그림에는 적용되지 않습니다. 이것을 위해서는 좀더 보완이 필요합니다.
적용 방법 - 간단히, 해당 스킨의 view.php의 맨 앞에 다음을 추가합니다.
<?
if(preg_match("/.jpg$/i",$file_name1) || preg_match("/.gif$/i",$file_name1) || preg_match("/.png$/i",$file_name1) || preg_match("/.bmp$/i",$file_name1)) {
$filename = $data['file_name1'];
$str = preg_split("//", $filename);
$img_file_name1 = "";
foreach ($str as $c) {
if (ord($c) > 127) { $c = "%" . dechex(ord($c)); }
$img_file_name1 .= $c;
}
$upload_image1="<IMG src="$img_file_name1" border="0" name="zb_target_resize"><BR>";
}
if(preg_match("/.jpg$/i",$file_name2) || preg_match("/.gif$/i",$file_name2) || preg_match("/.png$/i",$file_name2) || preg_match("/.bmp$/i",$file_name2)) {
$filename = $data['file_name2'];
$str = preg_split("//", $filename);
$img_file_name2 = "";
foreach ($str as $c) {
if (ord($c) > 127) { $c = "%" . dechex(ord($c)); }
$img_file_name2 .= $c;
}
$upload_image2="<IMG src="$img_file_name2" border="0" name="zb_target_resize"><BR>";
}
?>
그러면 끝~ 한글 이름 이미지가 바로 뜹니다.
단, 스킨 내부에 이미지 표시 부분이 <?=$upload_image1?>의 형식으로 되어 있어야 합니다. 이 부분이 변형된 스킨이라면 안될 수도 있습니다.
이 방식의 원리는...?
IMG src="..." 부분에 표시되는 파일이름을 변환된 코드로 바꾸어 넣어주는 것입니다.
예를 들어, <IMG src="휴양소약도.jpg">를 <IMG src="%c8%de%be%e7%bc%d2%be%e0%b5%b5.jpg">로 바꿔줍니다.
% + 두자리 16진수문자는 인터넷 주소에서 해당 아스키값의 문자로 해석되는데, 웹브라우저의 주소창에 한글로 써넣으면 주소를 읽지 못하는 것을 이렇게 써넣으면 인식하더군요. 그래서 아스키 128 이상의 모든 문자를 이런 형식으로 바꾸어 주도록 했습니다.
|
|