UTF8在php联系表单中遇到麻烦

时间:2012-05-15 16:42:08

标签: php syntax-error

这是我的联系功能:

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并允许使用特殊字符,如法语口音。

1 个答案:

答案 0 :(得分:1)

尝试使用UTF-8编码保存文件。 如果您正在使用visual studio,请转到文件,另存为,使用编码保存并选择Unicode(不带签名的UTF-8)。