Problem with utf-8


Problem with utf-8

我有一个utf-8的问题。我使用Codeigniter框架。为了客户,我必须这么做将CSV文件转换为数据库。但是当我通过查询添加数据到数据库时这是一个问题。有些字符不工作。比如这个单词:esamen。当我在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);

问题是字段级别。有人知道答案了吗?非常感谢!!

问候,Jelle

您需要在插入查询

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

不应该使用国家字符串文字吗?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

尝试使用iconv():

将文本转换为Unicode
iconv( "ISO-8859-1", "UTF-8", $leerdoel );

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

尝试将此添加到header

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

还要检查编辑器的编码设置

我有一个类似的问题,我解决添加到我的PHP文件的开始:

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

此外,检查您是否以UTF-8格式保存PHP文件而没有BOM是非常重要的,我对此感到非常头痛。我推荐使用notepad++,它可以显示当前的文件编码,并允许您在必要时转换为没有BOM的UTF-8。

如果你想看我的问题和解决方案,它在这里。

希望能帮到你!