我有带有 $.ajax 发件人的页面(编码'windows-1251').php:
<div style='float:left;' id='commentRegistration'>
<input id='addNewCommentUserName' name="name" type="text" size="20" maxlength="30" style="border:1px solid #AAA; width:208px;" value="<? echo "$_SESSION[login]"; ?>" />
<textarea id='addNewCommentText' name="text" style="width: 406px; height: 50px; resize: vertical; border:1px solid #AAA;"></textarea>
<input id='addNewCommentId' name="id" type="hidden" value="<? echo"$myrow[id]"; ?>">
<input id='addNewCommentCodeGen' type='text' name='code' maxlength='6' style='border:1px solid #AAA; width:47px;'>
<input id='addNewCommentBtn' class='button' style='width:208px; padding-top:5px; padding-bottom:5px;' type='submit' name='submit' value='Добавить комментарий'>
<script>
$(document).ready(function(){
var name = document.getElementById('addNewCommentUserName');
var text = document.getElementById('addNewCommentText');
var id = document.getElementById('addNewCommentId');
var code = document.getElementById('addNewCommentCodeGen');
$('#addNewCommentBtn').bind('click',function(){
$.ajax({
type: "POST",
url: "comment.php",
data: { 'name':name.value, 'text':text.value, 'id':id.value, 'code':code.value }
}).done(function( msg ) {
});
});
});
</script>
comment.php:
<? include ("blocks/bd.php");
session_start();
header("Content-type: text/html; charset=UTF-8");
if (isset($_POST['name'])) { $name = $_POST['name']; if ($name == '') { unset($name);} }
if (isset($_POST['text'])) { $text = $_POST['text']; if ($text == '') { unset($text);} }
if (isset($_POST['code'])) { $code = $_POST['code']; if ($code == '') { unset($code);} }
if (isset($_POST['id'])) { $id = $_POST['id']; if ($id == '') { unset($id);} }
if (empty($name) or empty($text) or empty($code) or empty($id))
{
exit ("ErrorEmptyInfo");
}
$name = stripslashes($name);
$name = htmlspecialchars($name);
$text = stripslashes($text);
$text = htmlspecialchars($text);
$name = trim($name);
$text = trim($text);
$mail = "test@mail.ru";
$subject = "text text text";
$message = "text text text";
if (mail($mail, $subject, $message, "Content-type:text/plain; Charset=windows-1251\r\n" ))
{
$dateNow = date("Y-m-d");
iconv("UTF-8", "windows-1251", $text);
iconv("UTF-8", "windows-1251", $name);
$addComment = mysql_query("INSERT INTO comments (post,author,text,date) VALUES ('$id','$name','$text','$dateNow')",$db);
echo "SUCCESS";
}
?>
在数据库中 $text 和 $name 写入不正确(编码问题)。我了解 $.ajax 发送 UTF-8 编码。要将编码更改为 windows-1251,我使用 iconv("UTF-8", "windows-1251", $text); 不工作。我如何强制使用 windows-1251 正确写入 my_sql 数据库字符串????