每个人都知道如何使用codeiginter在页面中实现搜索。
一个问题是我的关键字,例如“Şaweqă”有diacritisc。如何使用此关键字搜索数据库表。
简单$this->db->like($keyword);
返回数据库错误。
我的数据库字符编码设置为utf8-general-ci
,我搜索的表格中包含utf8_romanian_ci
编码的行。
答案 0 :(得分:1)
尝试在CI配置文件中允许使用特殊字符:
$config['permitted_uri_chars'] = 'a-z 0-9~%.:@_\-ä';
如果您使用GET
方法,请尝试urldecode()
关键字:
$keyword = urldecode($keyword);
答案 1 :(得分:1)
SHOW CREATE TABLE
的输出应该是以下方式之一:
the_column ... CHARACTER SET utf8, -- or utf8mb4
或,如果未在the_column
上指定,则
CREATE TABLE ... (...) DEFAULT CHARACTER SET utf8; -- or utf8mb4
要检查Șaweqă
是存储(通过INSERT
等)正确地作为utf8,请执行SELECT HEX(col)...
之类的操作。您应该C898 61 77 65 71 C483
获得Șaweqă
。 (我添加了空格来区分字符。)
要检查是否已正确获取(通过SELECT
等),请查看输出。