Как я могу заказать данные, полученные с MySQL по арабскому алфавиту?
Замечания: я использую utf8_general_ci
Что касается сортировки в MySQL, и кодировка в порядке, я просто хочу знать, как сортировать данные по алфавиту.
Чтобы отсортировать арабский текст в базе данных mysql с помощью php, вы должны убедиться, что:
UTF-8 Unicode
(utf8
)utf8_general_ci
utf8_general_ci
или жеutf8_unicode_ci
Поэтому, когда вы создаете свою таблицу, установите для charset значение 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
, конвертируйте это так:
ALTER TABLE `my_table` CONVERT TO CHARACTER SET utf8
Увидеть : Набор символов в MySQL.
Затем вам нужно добавить строку в ваш PHP при настройке подключения к базе данных:
mysql_query ('SET NAMES \'UTF8\'');
Или же :
mysql_set_charset ('UTF8'); // PHP 5.2.3 or greater.
Или если вы используете PDO
, вы можете передать его как 4-й параметр, например:
$db = new PDO ('mysql:host=localhost;dbname=tests', 'root', '',
array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
Также не забудьте установить заголовок ваших страниц на utf8
:
header ('Content-type:text/html; charset=utf-8');
Пример сортировки запроса:
$sql = "SELECT * FROM my_table ORDER BY name" ;
Надеюсь это поможет.
Других решений пока нет …