我在使用包含挪威字符(Æ,Ø,Å等)的数据表(.net)中显示来自MySQL的数据时遇到问题。我正在运行CodeIgniter并在database.php中配置了以下变量:
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
我还在将数据插入数据库之前对表单中的数据使用utf8_encode,但是当我提取数据时,会显示出来。该数据库还配置了utf8_general_ci。简而言之,我的问题是:我应该如何配置CodeIgniter和MySQL,以便能够从数据库中插入和提取数据而不会出现问题?我应该在提交数据之前使用utf8_encode,还是只是双重编码和问题的一部分?
PS!我不认为数据表是问题的一部分,因为当数据发送到数据表时,该字段已经为空。
PS2!我不确定为什么,但我只是面临大写挪威字母的问题。 Ø无法显示,但ø工作正常。 Å无法显示,但å工作正常。
答案 0 :(得分:0)
上周我遇到了类似的问题。我发现问题不是数据库,而是Codeigniter处理数据的方式。
因此,每次在数据库中保存数据之前,我都会通过
传递数据htmlentities($str, ENT_QUOTES | ENT_HTML401, "UTF-8");
在以html显示数据之前,我再次通过
html_entity_decode($str, ENT_COMPAT | ENT_HTML401, 'UTF-8')
仅供记录,我在我的数据库配置文件中有这个
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
答案 1 :(得分:0)
尝试使用它:
mysql_select_db('db_name');
mysql_query("SET NAMES 'utf8'");
将mysql_query("SET NAMES 'utf8'");
放在选择数据库行