BOARD

문제 해결

그누보드4 게시판 카테고리 한글 인코딩 및 경로 오류 해결 가이드

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 10회 작성일 26-09-28 16:35

본문

그누보드4 게시판 카테고리 한글 인코딩 및 경로 오류 해결 가이드

그누보드4 게시판에서 한글 카테고리를 사용할 때 발생하는 경로 오류와 인코딩 깨짐 현상을 해결하여, 운영자와 개발자가 안정적으로 게시판 분류 기능을 적용할 수 있도록 돕습니다.

그누보드4 게시판 카테고리 경로 변수 누락 오류 해결 방법

그누보드4 UTF-8 환경의 게시판 스킨에서 한글 카테고리를 선택할 때 경로 변수나 변수 선언 관련 오류가 발생할 경우, 자바스크립트의 카테고리 변경 스크립트에 encodeURI() 함수를 적용하여 해결할 수 있습니다.

1. 수정 전 백업 및 파일 위치

  • 수정할 파일: 게시판 스킨 폴더 내의 list.skin.php
  • 주의사항: 코드를 수정하기 전 원본 list.skin.php 파일을 반드시 백업해 두어야 합니다.

2. 코드 수정 방법

list.skin.php 파일에서 +this.value를 검색한 뒤, 아래와 같이 +encodeURI(this.value) 형태로 수정합니다.

원본 코드 예시

<select name=sca onchange="location='<?=$category_location?>'+this.value;">

수정된 코드 예시

<select name=sca onchange="location='<?php echo $category_location;?>'+encodeURI(this.value);">

3. 적용 후 확인 사항

  • 브라우저에서 게시판 카테고리를 다른 항목으로 변경해봅니다.
  • URL 파라미터에 한글 카테고리 값이 정상적으로 인코딩되어 전달되는지 확인합니다.
  • 참고 및 예외: EUC-KR 환경에서 동일하게 encodeURI를 적용할 경우 js/sideview.js 등과 관련된 변수 선언 에러(g4_is_member 변수 선언 오류 등)가 발생할 수 있으므로 환경에 따른 호환성을 유의해야 합니다.

일반 페이지 및 메뉴의 외부 링크에서 한글 카테고리(sca) 인코딩 오류 해결 방법

그누보드4 게시판의 일반 페이지나 메뉴에서 외부 링크를 통해 한글 카테고리(sca) 값을 전달할 때, 브라우저(예: 익스플로러) 환경에 따라 링크가 정상적으로 작동하지 않거나 한글 분류명이 깨지는 문제가 발생할 수 있습니다.

원인

파이어폭스 등 일부 브라우저에서는 한글 파라미터를 그대로 전달해도 동작하지만, 익스플로러 등에서는 URL의 한글 및 특수문자 처리가 올바르게 이루어지지 않아 링크가 정상적으로 열리지 않는 오류가 발생합니다.

해결 방법

링크 생성 시 PHP의 urlencode() 함수를 사용하여 한글 카테고리명을 인코딩해 주어야 합니다.

  • 기존 링크 형식 (오류 발생 가능)
<a href="<?php echo $g4['path'];?>/bbs/board.php?bo_table=free&sca=분류">분류</a>
  • 수정된 링크 형식 (urlencode 적용)
<a href='<?="$g4[bbs_path]/board.php?bo_table=테이블명&sca=".urlencode("분류명")?>'>분류명링크걸기</a>

또는

<a href="<?php echo $g4['path'];?>/bbs/board.php?bo_table=free&sca=<?=urlencode("분류")?>">분류</a>

위와 같이 urlencode() 함수를 적용하면 브라우저 환경에 구애받지 않고 한글 카테고리(sca) 값이 안전하게 전달되어 인코딩 깨짐 문제를 방지할 수 있습니다.

갤러리 스킨에서 한글 카테고리 글의 이미지나 제목을 클릭했을 때 하단 목록이 보이지 않는 문제는 링크 경로에 카테고리(sca) 파라미터와 urlencode() 처리가 누락되었기 때문에 발생합니다.

수정 위치 및 방법

해당 게시판 스킨 폴더 내의 list.skin.php 파일을 엽니다. 파일을 수정하기 전 반드시 원본을 백업하십시오.

list.skin.php 파일에서 아래의 기존 코드를 찾습니다.

$view_img = "<a href='{$g4[bbs_path]}/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}&page=$page&sca=". urlencode($list[$i][ca_name])."'>";
$view_href = "<a class='bl' href='{$g4[bbs_path]}/board.php?bo_table={$bo_table}&wr_id={$list[$i][wr_id]}&page={$page}&sca=". urlencode($list[$i][ca_name])."'>";

찾은 코드를 아래와 같이 &sca=와 urlencode($list[$i][ca_name])가 포함되도록 수정합니다.

$view_img = "<a href='{$g4[bbs_path]}/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}&page=$page&sca=". urlencode($list[$i][ca_name])."'>";
$view_href = "<a class='bl' href='{$g4[bbs_path]}/board.php?bo_table={$bo_table}&wr_id={$list[$i][wr_id]}&page={$page}&sca=". urlencode($list[$i][ca_name])."'>";

다음 행동 및 확인

수정 완료 후 갤러리 게시판으로 이동하여 한글 카테고리를 선택한 뒤, 게시물의 이미지나 제목을 클릭했을 때 하단 목록이 정상적으로 유지되는지 확인합니다.

EUC-KR 환경에서의 encodeURI 적용 호환성 문제와 주의사항

그누보드4 환경에서 카테고리 분류 사용 시 한글 인코딩 문제를 해결하기 위해 자바스크립트에 encodeURI를 적용할 때, 환경에 따라 예외적인 문제가 발생할 수 있습니다.

확인 및 주의사항

  • EUC-KR 환경 호환성 오류: UTF-8 게시판 스킨의 list.skin.php 파일에서 +this.value를 +encodeURI(this.value)로 수정하는 방식을 EUC-KR 환경의 스킨에 그대로 적용하면, g4_is_member 변수가 선언되지 않았습니다.와 같은 에러가 js/sideview.js 파일에서 발생할 수 있습니다.
  • 적용 전 백업 필수: 소스코드를 수정하기 전에는 반드시 원본 파일을 백업한 후 환경에 맞는 인코딩 방식인지 확인해야 합니다.
  • 원인 확정 자제: 스크립트 수정 후 발생하는 에러는 사용 중인 캐릭터셋(EUC-KR 또는 UTF-8)과 스킨 파일의 호환 여부에 따라 달라질 수 있으므로, 무조건적인 변경보다 현재 게시판의 인코딩 환경을 먼저 점검해야 합니다.

상황별 해결 경로

  1. 게시판 카테고리 선택 시 경로 오류 발생 (UTF-8 환경)
    • 선택 기준: list.skin.php 내 자바스크립트 onchange 이벤트
    • 다음 행동: +this.value를 +encodeURI(this.value)로 수정하여 URL 인코딩을 적용합니다.
  2. 외부 링크나 메뉴에서 한글 카테고리(sca) 전달 시 깨짐
    • 선택 기준: 링크 주소 내 sca 파라미터
    • 다음 행동: sca=분류명 대신 sca=<?=urlencode("분류명")?> 형태로 PHP 함수를 적용합니다.
  3. 갤러리 스킨에서 카테고리 필터링이 풀리는 경우
    • 선택 기준: list.skin.php 내 이미지 및 제목 링크
    • 다음 행동: 링크 URL 끝에 &sca=와 urlencode($list[$i][ca_name])를 추가하여 파라미터를 유지합니다.

Q. EUC-KR 환경에서 encodeURI 적용 시 sideview.js 에러가 발생합니다.

  • 대안: EUC-KR 환경은 UTF-8과 인코딩 방식이 달라 encodeURI 적용 시 변수 선언 오류가 발생할 수 있습니다. 무리한 스크립트 수정보다는 해당 환경의 인코딩 호환성을 먼저 점검하고, 필요 시 인코딩을 거치지 않는 기본값 사용을 검토하십시오.

Q. urlencode()와 encodeURI() 중 무엇을 써야 하나요?

  • 구분: PHP 코드 내에서 링크를 생성할 때는 urlencode()를 사용하고, 자바스크립트 이벤트(onchange 등)를 통해 브라우저에서 URL을 변경할 때는 encodeURI()를 사용합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.