按字母顺序排列阿拉伯语数据

Order Arabic data by alphabet letters

如何按阿拉伯字母排序从 MySQL 抓取的数据?

注意:我在MySQL中使用utf8_general_ci作为排序规则,编码没问题,我只想知道如何按字母排序数据.

为了使用 php 对 mysql 数据库中的阿拉伯语文本进行排序,您必须确保:

  1. MySQL 字符集:UTF-8 Unicode (utf8)
  2. MySQL 连接排序规则:utf8_general_ci
  3. 您的数据库和 table 归类设置为:utf8_general_ciutf8_unicode_ci

因此,当您创建 table 将字符集设置为 utf8 时:

CREATE TABLE my_table (
id int(11) NOT NULL auto_increment,
name varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY  (id)
) DEFAULT CHARSET=utf8;

如果您已经有 latin1 编码的 table,请像这样转换它:

ALTER TABLE `my_table` CONVERT TO CHARACTER SET utf8

参见:Character set in MySQL

然后,您需要在设置数据库连接时在 PHP 中添加一行:

mysql_query ('SET NAMES \'UTF8\'');  

或:

mysql_set_charset ('UTF8'); // PHP 5.2.3 or greater.

或者,如果您使用的是 PDO,您可以像这样将其作为第四个参数传递:

$db = new PDO ('mysql:host=localhost;dbname=tests', 'root', '', 
               array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

另外不要忘记将页面的 header 设置为 utf8 :

header ('Content-type:text/html; charset=utf-8');

示例排序查询:

$sql = "SELECT * FROM my_table ORDER BY name" ;