Drupal Accented字符导致db_insert错误

时间:2012-05-30 07:47:01

标签: php drupal character-encoding drupal-7

尝试此插入查询时:

//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 ...”))它可以正常工作。

公司名称如下:JohnsIndustriëleCompany

数据库是utf8,表和字段utf8

希望有人能对这个谜团有所了解!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

表格和字段格式应采用UTF-8格式。

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

insert_value就像“Clément”。 utf8_encode()函数将帮助您插入上升字符。