방문자님의 제보로 제로보드4 utf-8 버젼의 버그 하나를 발견해서 수정해 보기로 했다.

원인은 url 로 한글이 그대로 보내져서 제대로 파싱을 못하는것이었다.

해결책은 아래와 같다.

1. 아래 파일들을 텍스트 에디터로 연다.

zboard.php, view.php, write.php, _head.php
2. 열린 파일을 에서 아래 텍스트를 검색해서 모두 수정한다.
찾을 텍스트 : keyword=$keyword
변경할 텍스트 : keyword=".urlencode($keyword)."
3. 단 여기서 _head.php 파일은 변경할 텍스트를 아래와같이 수정한다.
변경할 텍스트 : keyword=".urlencode($keyword)

신고
by cranix 2007.10.14 10:53

웹페이지를 UTF-8 로 작성했는데 깨져서 보이는데도 있고..

제대로 나오는데도 있을경우엔.

페이지 head 에다가 아래 내용을 추가해서 강제로 맞춰주면 된다.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

신고

' > Web' 카테고리의 다른 글

부분적으로 XSL 적용하기.  (22) 2007.08.22
XSL 엘리먼트 정리  (22) 2007.08.22
텍스트 로 자바스크립트 실행하는 방법  (44) 2007.08.01
xsl 에서 태그 속성 바꾸기.  (23) 2007.07.16
웹페이지 인코딩  (23) 2007.06.11
JAVASCRIPT 에서 XML 문서 DOM,XPATH 로 파싱하기  (26) 2006.12.16
by cranix 2007.06.11 21:30

몇일전 제로보드를 utf-8 환경으로 컨버팅 한적이 있는데.

그후에 몇가지 오류가 발견되었다.

이건 그중에 하나로 최근게시물 같은데서 문자열을 자를때 잘린 문자가 깨져서 나오는 경우이다.

php 의 strlen 으로 한글 한글자의 길이를 확인해본결과 3 이었다.

기존에 zb4 가 개발되던 euc-kr 환경은 2였기때문에 cut_str 함수를 수정해 줄필요가 있다.

수정은 아래와같이 했다.

lib.php 파일의 cut_str 함수를 아래와같이 수정한다.

[code]function cut_str($msg,$cut_size) {
  if($cut_size<=0) return $msg;
  if(ereg("\[re\]",$msg)) $cut_size=$cut_size+4;
  
  $max_size = $cut_size;
  $i=0;
  while(1) {
   if (ord($msg[$i])>127)
    $i+=3;
   else
    $i++;

   if (strlen($msg) < $i)
    return $msg;

   if ($max_size == 0)
    return substr($msg,0,$i)."...";
   else
    $max_size--;
  }
}[/code]


끄읏.

신고
by cranix 2007.03.16 18:32
| 1 |