-1

这是我的联系功能:

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

4

1 回答 1

1

尝试使用编码 UTF-8 保存文件。如果您使用的是 Visual Studio,请转到 File、Save As、Save With Encoding 并选择 Unicode(UTF-8 without signature)。

于 2012-05-15T16:56:43.727 回答