1

是的,当加载/刷新调用某些值的 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 :/";
}

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

声明 UTF-8 的 HTML

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

1 回答 1

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 有一个metacharset utf8 的标签,你也需要做更多的工作。顺便说一句,html5(而不是现在已经过时的 html4.01)的新格式是:

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

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

于 2013-06-18T22:53:21.157 回答