ÆØÅ字母随机被替换为Ã|Ã¥

时间:2013-06-18 21:41:21

标签: php html mysql web

是的,我有一个问题,当加载/刷新一个调用某些值的php页面时,ÆØÅ随机被替换为Ã||〜¥...

在我添加

之前一切正常
$Filename = preg_replace("/[^a-zA-Z0-9]/", "", $Filename);

但是这导致脚本删除了。在文件扩展名中,所以我删除了代码。现在它随机替换加载/刷新时的字母

$Filename=$_FILES['Filename']['name'];
$Description=$_POST['Description'];
$Contact=$_POST['Contact'];
$Time = gmdate('Y-m-d H:i');
$Title=$_POST['Title'];
$Filename = preg_replace("/[^a-zA-Z0-9]/", "", $Filename);

if(move_uploaded_file($_FILES['Filename']['tmp_name'], $target)) {
echo "Filen ". basename( $_FILES['Filename']['name']). " er nå lagt til blant Alta Botanikkforeningens funn.";
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("altabotanikk") or die(mysql_error()) ;

mysql_query("INSERT INTO picture (Filename,Description,Contact,Time,Title)
VALUES ('$Filename', '$Description', '$Contact', now(), '$Title')") ;
} else {
echo "Det skjedde noe galt her :/";
}

由于它是随机的并且在任何地方都没有错误,我不知道造成这种情况的原因。

HTML声明UTF-8

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

1 个答案:

答案 0 :(得分:1)

您确定您的MySQL连接始终是UTF8吗?

mysql_connect("localhost", "root", "") or die(mysql_error()) ;
// make sure we're in UTF8 mode!
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
// continue
mysql_select_db("altabotanikk") or die(mysql_error()) ;

然后从那里拿走它?

即使您的HTML有charset utf8的meta标记,您还需要更多工作。顺便说一下,html5的新格式(而不是现在过时的html4.01)是:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    ...
  </head>
  <body>...</body>
</html>

还需要告诉mysql 连接一切都是UTF8。然后,为了更好的衡量,您还需要确保您的脚本本身(.php文件)保存为unicode文件,因为是的,这也可以搞砸了(有趣的时间!)