utf-8的问题

时间:2011-08-12 12:11:32

标签: php mysql codeigniter utf-8

我的utf-8有问题。我使用框架Codeigniter。对于我必须的客户 将CSV文件转换为数据库。但是当我通过查询将数据添加到数据库时 这是一个问题。有些人物不起作用。比如这个词:Eén。当我在PhpMyadmin添加这个词时,它是对的。

当我尝试使用Codeigniter查询时,它没有。 我的数据库站在Utf-8上。 Codeigniter配置为utf-8。数据库配置在utf-8上。

以下是查询:

 $query = "INSERT INTO lds_leerdoel(id,leerdoel,kind_omschrijving,cito,groep_id,OCW,opbouw,
kerngebied_id,jaar_maand,KVH,craats,refnivo,toelichting,auteur)
VALUES
(
'".$this->db->escape_str($id)."',
'".$leerdoel."',
'".$this->db->escape_str($kind_omschrijving)."',
'".$this->db->escape_str($cito)."',
'".$this->db->escape_str($groep_id)."',
'".$this->db->escape_str($OCW)."',
'".$this->db->escape_str($opbouw)."',
'".$this->db->escape_str($kerngebied_id)."',
'".$this->db->escape_str($jaar_maand)."',
'".$this->db->escape_str($KVH)."',
'".$this->db->escape_str($craats)."',
'".$this->db->escape_str($refnivo)."',
'".$this->db->escape_str($toelichting)."',
'".$this->db->escape_str($auteur)."'
)";

$this->db->query($query);

问题在于场上的leerdoel。有人是解决方案吗?非常感谢你!

问候, 耶勒

5 个答案:

答案 0 :(得分:1)

您需要在插入查询

之前运行此查询
"SET NAMES utf8"

答案 1 :(得分:0)

尝试使用iconv()将文本转换为Unicode:

iconv( "ISO-8859-1", "UTF-8", $leerdoel );

如果您不知道文件使用的编码方式,您可能需要进行一些实验。 (我认为ISO-8859-1或ISO-8859-15是最常见的。)

答案 2 :(得分:0)

你不应该使用国家字符串文字吗? http://dev.mysql.com/doc/refman/5.0/en/charset-national.html

意思是你会写:

 $query = "INSERT INTO lds_leerdoel(id,leerdoel,kind_omschrijving,cito,groep_id,OCW,opbouw,
kerngebied_id,jaar_maand,KVH,craats,refnivo,toelichting,auteur)
VALUES
(
'".$this->db->escape_str($id)."',
N'".$leerdoel."',
-- rest of query omitted

答案 3 :(得分:0)

尝试将此添加到标题

header('Content-Type: text/html; Charset=UTF-8');

同时检查编辑器的编码设置。

答案 4 :(得分:0)

我遇到了类似的问题,我在PHP文件的开头解决了这个问题:

ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');

此外,检查您是否在没有BOM的情况下以UTF-8格式保存PHP文件非常重要,我对此非常头疼。我推荐Notepad++,它显示当前的文件编码,并允许您在没有BOM的情况下转换为UTF-8。

如果您想查看我的问题和解决方案,it is here

希望它可以帮到你!