Charset与Datatables.net,PHP和MySQL有关

时间:2013-12-09 09:13:13

标签: codeigniter character-encoding datatables

我在使用包含挪威字符(Æ,Ø,Å等)的数据表(.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!我不确定为什么,但我只是面临大写挪威字母的问题。 Ø无法显示,但ø工作正常。 Å无法显示,但å工作正常。

2 个答案:

答案 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'");放在选择数据库行

之后