我的上传脚本似乎没有正确地将韩文字符存储到数据库中。
$file_name = $_FILES['Filedata'][ 'name' ];
$newFileName = time() . "-" . $file_name;
$target = $uploaddir . $newFileName;
$source_file_path = $_FILES['Filedata']['tmp_name'];
if( move_uploaded_file( $source_file_path, $target ) ) {
$sql = "INSERT INTO images(file, album, author) VALUES('".$newFileName."', '".$albumID."', '".$authorID."')";
$result = mysql_query($sql);
if(!$result) {
echo "Could not store into database";
} else {
$sql = "UPDATE albums SET `lastdate` = NOW() WHERE id = '".$albumID."'";
if(mysql_query($sql)) {
echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$target);
} else {
echo mysql_error();
}
}
}
奇怪的是,它使用正确的名称正确存储文件,但它将所有不常见的字符添加到数据库中,如“1321088842-ê°”,“。.jpg”。数据库设置为utf8_general_ci
,所以我不确定问题是什么。有什么想法吗?
答案 0 :(得分:3)
您需要确保:
如果在任何地方都有任何意义,在某些地方没有使用UTF-8那么事情将会发生可怕的错误。
请注意,默认情况下,Web浏览器通常不使用UTF-8。因此,您需要包含一个<meta>
标记,指示它使用utf-8,或者手动设置它们以使用它(在我的浏览器中,使用View - &gt;文本编码 - &gt; UTF-8)。 / p>
你的php脚本正在回显浏览器的文件名,但如果只是回显没有<meta>
标签的文件名,浏览器会尝试将其显示为其他编码,可能是latin1。