3
<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이 사용되지 않음을 나타내는 물음표 상자가 반환됩니다.
어디서 문제가 될 수 있습니까?
시간을내어 주셔서 감사합니다.
Словенъска는 이미 UTF8로되어 있습니다. utf8_encode()는 아마 그것을 이중으로 인코딩 할 것이고, 분명히 깨져 버릴 것입니다. –
글쎄, 말했듯이, 내가 그것을 제거했을 때, 결과 문자열은 물음표 상자였습니다. – Arnthor
예. 그게 내가 완전한 대답을 제공하지 않는 이유이다 :) 단지 이중 인코딩을 지적하면 문제를 일으킬 수있다. –