【发布时间】:2018-06-05 09:13:55
【问题描述】:
我正在使用 CI3,并且我有一个搜索页面。在我的搜索页面中,我有一个名为 LIKE 的选项。我在搜索字符串之前使用了 % 值,例如 %dd11,它变成了这样
在哪里 t.name LIKE '�11'
我添加了 在标题中,我还在数据库配置中设置了我的字符集。
这是我的表单输入字段
这是我的php代码
if (preg_match('/(LIKE).*/', $field)) {
$field = preg_replace('/\s(LIKE)/', '', $field);
$field = $field.' LIKE';
if (preg_match("/\./", $field)) {
$where .= $field." '".$value.";
} else {
$where .= "t.".$field." '".$value.";
}
}
谁能告诉我为什么它变成这样编码。请帮帮我
【问题讨论】:
-
答案可能在于here
-
实际上,这似乎是 UTF-8 和 URL 编码问题...
%dd是 Ý (url 编码),它正在变成 �,因为它不支持你的字符集。我猜你在不应该使用的地方使用urldecode(),并且可能没有对数据库连接器中的字符集进行排序。 -
我在我的登录模块中使用 urldecode(),而不是在这个模块中。这就是我在 db 文件中设置字符集的方式; $db['tiffinTom']['char_set'] = 'utf8'; $db['tiffinTom']['dbcollat'] = 'utf8_general_ci';
标签: php sql database codeigniter codeigniter-3