UTF-8编码不适用于PHP

时间:2016-01-25 17:47:23

标签: php mysql codeigniter encoding

当我从mysql表中获取数据时,

8编码不起作用我在数据库中有一些特殊字符无法获取某些具有特殊字符的城市,例如Østfoldcity和Ærø所以当我输入ostfold时它没有获取{{ 1}}来自数据库的城市。当我分别写下sia和cor时,我完全从db获得Šiauliai和Çorum。

我有一个城市表我使用jquery autocomplete ajax从这个表中获取城市所以当我输入前三个字母时它会显示我在CodeIgniter框架中工作的相关字母列表。

我的 CodeIgniter database.php的设置: -

Østfold

我的数据库表城市的列设置是: -

$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';

请帮助我,我必须改变其他任何事情,为什么我无法让这些城市以Ø和Æ开头。

3 个答案:

答案 0 :(得分:2)

尝试此代码我希望这可以解决您的问题。

file_exists(mb_convert_encoding("file_å.txt", "UTF-8"));

答案 1 :(得分:0)

collation table不列出Æ等于A,也不列出Ø等于O.

你没有编码问题(否则Çorum= corum不起作用),而是一个期望问题。你期望他们是平等的。根据整理表的定义,它们不是。

答案 2 :(得分:0)

请参阅Reference

Ø = O只进行一次整理:utf8_unicode_520_ci;大多数人将其视为OP之间的字母。一些人在Z之后整理它。

Æ是另一回事。它与AE中的两个字母utf8_unicode_520_ci以及至少一个其他排序规则进行整理。否则,它位于AB之间或Z之后。

Ç是另一回事。对于除 C之外的所有归类,它等于utf8_turkish_ci,在这种情况下,它是CD之间的字母。

对于许多排序规则,

Š = S;某些人在ST之间。

底线:使用utf8_unicode_520_ci作为列和连接;将Æ键入AE