首页 文章

按字母顺序命名阿拉伯语名称Mysql和php

提问于
浏览
0

我试图用阿拉伯语对 alphabetical order 中的结果进行排序,但出于某种原因 not sorting correctly ..

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

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

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

但显示结果ilke:

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

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

Full Mysql Code ::

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 Code :

$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] 
"; }

结果应该是:

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

有人有线索吗 ?

3 回答

  • 0

    请事先尝试进行此查询:

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

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

  • 0

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

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

  • 0

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

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

    如果在你的mysql consol,你没有看到正确的阿拉伯语characors,这是因为控制台不支持utf-8,或者utf-8未启用 .

    在浏览器中检查它,但页面字符集应该是utf-8,否则你会看到奇怪的字符 .

    谢谢

相关问题