这是我的联系功能:
public static function contact_anon()
{
$form = new Form('contact_anon');
$form->field('email', 'text', array
(
'max_length' => 45,
'valid_email' => true
));
$form->field('message', 'textarea', array
(
'max_length' => 400,
'min_length' => 25
));
if($data = $form->validate())
{
$envoi = array
(
'message' => $data['message'],
'email' => $data['email']
);
mail('mymail@gmail.com', lang('contact_anon'), lang('contact_anon_text', $envoi), 'From: noreply@'.$_SERVER['HTTP_HOST']);
}
return $form;
}
然后我有另外一个php文件,其中包含将要发送的内容文本+来自表单的消息:
<?php
fw::$lang = array_merge(fw::$lang, array
(
'contact_anon_text' => "You have been contacted :
Message : {message}
Mail : {email}"
));
表单运行良好,但{message}
无法正确显示,例如:
j\'écris avec des accents pour voir si ça marche.
该网站有一个UTF8字符集,但我不知道php,我尝试了以下内容:
'message' => htmlentities((utf8_decode($data['message']), ENT_QUOTES),
但它返回:
syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting '('
我知道有数百篇关于UTF8的帖子,我检查了它们,阅读了php mnual和sql手册,但是我不能理解,因为我是初学者而不是英语。
在向数据库发送文本字段时也遇到了同样的问题,尽管数据库使用的是utf8_general_ci。所以我想这肯定是我的PHP代码的问题。我正在使用带控制器的MVC脚本。为了部分解决SQL问题,我使用:
return mysql_real_escape_string($string);
....
db::escape($username)
所以输出是正确的,但我更喜欢配置php使用UT8并允许使用特殊字符,如法语口音。
答案 0 :(得分:1)
尝试使用UTF-8编码保存文件。 如果您正在使用visual studio,请转到文件,另存为,使用编码保存并选择Unicode(不带签名的UTF-8)。