스크립트로 만든 검색창에서 특정 글자 입력시 깨지는 현상 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

스크립트로 만든 검색창에서 특정 글자 입력시 깨지는 현상 정보

스크립트로 만든 검색창에서 특정 글자 입력시 깨지는 현상

본문

현재 개인적으로 홈페이지를 만들어서 utf8 환경에서 사용하고 있습니다.
(기반 프로그램은 '그누보드' 입니다)

1. 문제점. 검색창에 특정 한글단어입력후, 검색시, 글자가 깨져서 보이는 현상
2. 깨지는 단어 예) 마이pc, 마이,마도로스,그림,그쟈,그리,그리,기린,기리 ....등등


홈페이지 상단에...
네이버나 다음처럼 <검색바>코드를 응용해서 붙여넣었습니다.
검색어를 입력하면 해당 포털사이트로 이동해서 해당 검색어와 관련된 자료를 찾는방식..

그런데, 이상하게도 한글로 검색을 하면 네이버,다음,구글등의 검색페이지에서
특정 한글 단어나 글자가 깨져서 출력이 되어 버립니다.
모두 그런건 또 아니고, 특정단어들에서 깨짐 현상이 보여집니다.

어제 한분이 도움을 주셨는데
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=191867

오늘 다시 해보니, 검색창에 한글입력시 잘되나 싶었는데
"마이pc"라는 단어를 검색하다가 해당포털로 이동되는 검색화면에서
글자가 깨져서 보여서 아래 언급한 몇몇 단어를 넣어보니 다 깨지네요
검색창에 입력시, 깨져서 보여지는 단어들의 예는 다음과 같습니다.
----------------------------------------------------------------
마이pc, 마이,마도로스,그림,그쟈,그리,그리,기린,기리 ....등등


문자셋 또는 브라우저와 관련한 문제인듯 한데... 정확한 문제가 파악이 안되네요.
그리고 안되면 모든 한글이 안되던지 해야지 왜 특정단어들만 깨지는 현상이 생기는지
그 이유를 찾기가 힘드네요.

참고로 이 부분을 제외하고는 홈페이지내 utf8과 관련한 글자깨짐등의 문제는 없습니다.

검색창에서 '한글검색어'입력시, 해당 포털의 새창에서 한글이 깨져버립니다
한번 보시고 부디 도움의 글을 부탁드립니다. (소스전체이므로 붙여넣기 해보셔도 됩니다)

아래 코드가 문제의 스크립트 코드전체 입니다.



<script type="text/javascript">
//-- 검색창 스크립터 --->

function addplus(items) {
  var plussed = "";
  for (var t = 1; t<= items.length ; t++) {
if (items.substring(t-1,t) == " ") {
plussed+="+";
}else{
plussed+=items.substring(t-1,t);
}
}
return plussed;
}

function doSearch() {
  var words;
  words = document.searchforit.query.value;

  var searchitems;
  searchitems=addplus(words);
 
  var index;
  index = document.searchforit.service.selectedIndex;

if (index>= 0) {

var site;
site = document.searchforit.service.options[index].value;
site+=searchitems;

if (notEmpty(searchitems)) {
window.open(site,"_blank");
}

}else {
alert("검색 엔진을 선택하세요.");
}
}


function notEmpty(word) {

if (word == "" || word == null) {

self.status="ENTER SEARCH searchitems";
alert("검색어를 입력하세요.");
document.searchforit.query.focus();
return false;

}else{

self.status = word + "을(를) 찾고 있습니다.";
return true;
}
  }

function clearIt() {
document.searchforit.query.value="";
document.searchforit.query.focus();
}

function FocusOn() {
document.searchforit.query.focus();
return;
}

//-- 검색폼 커서위치 -->
function sel_form() {
document.searchforit.query.focus();
}
</script>


<style type="text/css">
.search_select { font:13px gulim,tahoma; }
.search_select { line-height:normal; background:#FFFF99; *zoom:1; }
.search_select { padding:0; }

.search_input { font:13px gulim,tahoma }
.search_input { padding-left:10px; margin-left:5px; border-top:0px; border-right:0px; border-bottom:0px; border-left:1px solid #ccc;  }
</style>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<table align="center" border=0 cellpadding="0" cellspacing="0">
<form name="searchforit" method="get" action="javascript:doSearch()">
<col width="370" />
<col width="" />
<tr>
<td height="40" background="/_common/img/searchbar_bg.gif" style="padding-left:10px;">
  <select class="search_select" name="service">
<option value="http://search.naver.com/search.naver?where=nexearch&query=">+ 네이버 검색</option>
<option value="http://search.daum.net/search?t__nil_searchbox=btn&w=tot&sType=tot&q=">+ 다음 검색</option>
<option value="http://www.google.co.kr/search?complete=1&hl=ko&q=">+ 구글 검색</option>
<option value="http://kr.search.yahoo.com/search?fr=kr-pop_searchbox&p=">+ 야후 검색</option>
<option value="http://search.dreamwiz.com/cgi-bin/irs.cgi?so=2&q=">+ 드림위즈</option>
<option value="http://search.paran.com/search/index.php?Query=">+ 파란 검색</option>
<option value="">--------------</option>
<option value="http://endic.naver.com/ac/search.nhn?query=">+ 영어사전</option>
<option value="http://file.naver.com/search.php?q=">+ 네이버자료실</option>
<option value="http://search.simfile.chol.com/search.php?wh=total&SelectBoxID=total&q=">+ 심파일 검색</option>
  </select> <input class="search_input" type="text" name="query" size="30" style='width:200px;'></td>
<td height="40"><input type="image" src="/_common/img/searchbar_btn.gif" width='60' height='40' align='absmiddle'></td>
</tr>
</form></table>
</body>
</html>

댓글 전체

테스트를 해 보니 네이버 외에는 잘됩니다.
근데 왜 행님님 밑에만 댓글을 달게 되지...ㅋㅋㅋ (스토커~ 무셔라 하하)

암튼 네이버만 해결하면 되겠네요.
네이버검색을 선택했을 때만

words = escape(document.searchforit.query.value); 로 바꾸세요.

즐거운 하루 ^^*

p.c. 혹시 다른게 안되면 escape함수 대신 encodeURI 또는 encodeURIComponent 함수를
적용해 보삼.

그래도 안되면 php의 iconv함수를 사용해 문자셋을 바꿔보며 테스트 해 보면 알겠지만
해야할 일도 많고, 머리도 아프고, 배도 고프고, 술도 고프고... ㅋㅋㅋ
댓글 감사합니다.
알려주신 팁으로 해보니 네이버에서는 적용이 됩니다만,
구글에서는 또 한글이 깨지는군요.. -_- ;;

현재까지 적용해본 words관련 문구는 아래와 같은데, 모두 제각각 에러가 나는군요.

1. words = document.searchforit.query.value; (한글검색시, 글자깨지는 현상발생...익스6)
2. words = encodeURI(document.searchforit.query.value);  (네이버에서 글자깨짐)
3. words = escape(document.searchforit.query.value);      (구글에서 글자깨짐)

- 테스트 한글단어 : 마이,마도로스,그림,그리,기린,기리,그쟈....
전체 95 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT