我的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。有人是解决方案吗?非常感谢你!
问候, 耶勒
答案 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。
希望它可以帮到你!