2011-05-06 5 views
3

나는ajax : 강제 utf-8 인코딩

<meta charset="utf-8" /> 

다음 머리글에 정의 된 UTF-8 웹 페이지가 있습니다. 다음 코드가 포함 된 외부 .js 파일이 있습니다 :

function ajax_db(){ 
    $(document).ready(function(){ 
//some variables defined 

     $.ajax({ 
      type:"POST", 
      url:"db.php", 
      data:"u="+uname+"&p="+pass+"&m=1", 
      dataType:"text", 
      contentType: "application/x-www-form-urlencoded;charset=utf-8", 
      success: function(reply){ 
       $("#regstat").html("<p class='status'>"+reply+"</p>"); 
      } 
     }); 
    }); 
} 

알다시피 요청은 db로 이동합니다. php이고 m가 1로 설정되어 있고 모든 필드가 채워져 있지 않은 경우 여기에서 끝납니다 :

$mode = htmlspecialchars($_POST['m']); 

//Mode: 1 - register, 0 - log in, 2 - log out 

if ($mode == 1){ 

if (empty($_POST['u']) || empty($_POST['p']) || empty($_POST['email'])){ 
    $reply = "Словенъска"; 
    echo utf8_encode($reply); 
    exit; 
} 
//more code 
} 

문제는 텍스트 대신 일부 모기보가 반환된다는 것입니다. 내가 할 수있는 곳이라면 utf-8 인코딩을 강제로 시도했다. db.php에 다음 줄을 넣었다.

mb_internal_encoding('UTF-8'); 

header("Content-type: text/html; charset=utf-8"); 

전혀 효과가 없다. 또한 utf8_encode() 함수를 제거하면 utf-8이 사용되지 않음을 나타내는 물음표 상자가 반환됩니다.

어디서 문제가 될 수 있습니까?

시간을내어 주셔서 감사합니다.

+0

Словенъска는 이미 UTF8로되어 있습니다. utf8_encode()는 아마 그것을 이중으로 인코딩 할 것이고, 분명히 깨져 버릴 것입니다. –

+0

글쎄, 말했듯이, 내가 그것을 제거했을 때, 결과 문자열은 물음표 상자였습니다. – Arnthor

+0

예. 그게 내가 완전한 대답을 제공하지 않는 이유이다 :) 단지 이중 인코딩을 지적하면 문제를 일으킬 수있다. –

답변

2

또한 db.php 파일이 UTF-8 인코딩으로 저장되어 있는지 확인해야합니다.

관련 문제