按字母顺序排列阿拉伯语名称Mysql& PHP

时间:2014-03-25 20:41:08

标签: php mysql

我尝试在阿拉伯语中按字母顺序对结果进行排序,但出于某种原因未正确排序 ..

  

$ d1 = mysqli_query($ connector,“SELECT * FROM article其中type ='1'ORDER BY name ASC”);    while($ a1 = mysqli_fetch_array($ d1)){
              echo“$ a1 [name]
”;   }

这应该显示结果A-z排序或阿拉伯语:

    احمد
    اياد
    بسام
    تامر
    جعفر
    حسين
    خضر
    ياسمين

但显示结果ilke:

    تامر        
    جعفر
    حسين
    ياسمين
    احمد
    اياد
    بسام
    خضر

注意:我使用的是utf-8编码, 的 utf8_general_ci

完整的Mysql代码::

CREATE TABLE IF NOT EXISTS `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(150) NOT NULL,
  `type` int(11) NOT NULL,
  `content` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;


INSERT INTO `article` (`id`, `name`, `type`, `content`) VALUES
(1, '222', '', 'tst'),
(2, '111', '', '121'),
(3, 'جعفر', '', 'cont..'),
(4, 'احمد', '', 'cont..'),
(5, 'تامر', '', 'cont..'),
(6, 'اياد', '', 'cont..'),
(7, 'يحيى', '', 'cont..'),
(8, 'بسام', '', 'cont..'),
(9, 'بشير', '', 'cont..');

PHP代码:

$host = 'localhost';
$user = 'root';
$pass = '123';
$dbname = 'article_test';

 $connector = mysqli_connect($host, $user, $pass, $dbname) or die("Problem occured while connecting to Mysql Server..");
$d1 = mysqli_query($connector,"SELECT * FROM  `article`  where `type`='1' ORDER BY `name` ASC");
 while($a1 = mysqli_fetch_array($d1)){     
            echo"$a1[name] <br />";
}

结果应为:

111
222
احمد
اياد
بسام
بشير
تامر
جعفر
يحيى

有人知道吗?

3 个答案:

答案 0 :(得分:0)

您需要将MySQL中的排序规则设置为适当的值(我猜cp1256_general_ci),以便按字母顺序排列阿拉伯语进行排序。

http://forums.mysql.com/read.php?103,209072,209072

答案 1 :(得分:0)

请事先尝试进行此查询:

mysqli_query($connector, "SET NAMES utf8");
mysqli_set_charset($connector, "utf8");

如果这不起作用,请直接在MySQL控制台中运行查询,看看你得到了什么。

答案 2 :(得分:0)

在使用阿拉伯语网站时,您必须处理三件事:

1)数据库编码应为utf-8 2)表编码应为UTF-8 3)检查将保存文本数据的所有字段是否也具有utf-8字符集。

如果在你的mysql consol中,你没有看到正确的阿拉伯语字符,那是因为控制台不支持utf-8,或者utf-8没有启用。

在浏览器中查看,但页面字符集应为utf-8,否则您将看到奇怪的字符。

谢谢