1

尝试此插入查询时:

//insert into database
$contact_id = db_insert('contact')
    ->fields(array(
        'date_created' => date("Y-m-d H:i:s"),
        'date_updated' => date("Y-m-d H:i:s"),
        'list_id' => $form_state['values']['list_id'],
        'first_name' => $fn,
        'last_name' => $ln,
        'gender' => $g,
        'email' => $ea,
        'company_name' => $cn,
        'is_active' => 1,
    ))
    ->execute();

一切正常,所有数据加载正常,但是当公司名称带有重音时,会导致错误“网站遇到意外错误”。并且日志只是在那条特定的行上说“错误”。删除带有重音的行可以解决问题,但我需要能够添加该重音。如果我在 Drupal 方式之外建立数据库连接(只是 mysql_query("INSERT INTO...")),它工作正常。

公司名称如:Johns Industriële Company

数据库是utf8,表和字段是utf8

希望有人能解开这个谜团!

4

2 回答 2

2

这可能是输入中的编码问题。如果$cn ="Johns Industriële Company";存储在例如ISO-8859-1中,则序列ële(在这种情况下应该是字节序列)将表示数据库应该拒绝eb 6c 66的无效UTF-8序列。

尝试检查提交数据的编码和字节。

于 2012-05-30T07:55:21.400 回答
2

表和字段格式应为 UTF-8 格式。

db_insert('table_name')
          ->fields(array(
             'column_name' => utf8_encode('insert_value'),
           ))->execute();
    }

插入值,如“克莱门特”。utf8_encode() 函数将帮助您插入上升字符。

于 2014-06-19T05:02:39.410 回答