web-dev-qa-db-fra.com

Enregistrer les données en arabe dans la base de données MySQL

J'ai changé le jeu de caractères des tableaux et de la colonne, je reçois le texte arabe comme ???? marques dans la base de données MYSQL

voici le design de la table

  CREATE DATABASE mydb
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;


   CREATE TABLE `categories` (                        
   `category_id` tinyint(2) NOT NULL auto_increment,           
   `category_name` varchar(50)character set utf8 NOT NULL ,  
   PRIMARY KEY  (`category_id`) 


   insert into `mydb`.`categories` 
    (`category_id`, `category_name`)
    values (1,'کتگوری');
   commit;

Quand je lance à nouveau la requête de sélection, cela montre ???? comme texte?

Quelqu'un peut-il me dire où je fais mal?

28
Romani

Pour insérer manuellement des données arabes dans votre Phpmyadmin.

Vérifiez d'abord que votre nom de base de données, de table et de colonne est bien défini ou non. Si ceux-ci ne sont pas définis sur utf8, vous devez d'abord le définir, puis vous pouvez insérer des données arabes dans votre table db.

VOUS POUVEZ VÉRIFIER CHACUN DE CEUX-CI EN REGARDANT L'EXEMPLE CI-DESSOUS.

Pour la base de données:

SELECT default_character_set_name FROM information_schema.SCHEMATA S
WHERE schema_name = "schemaname";

Pour les tableaux:

SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,
       information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
  AND T.table_schema = "schemaname"
  AND T.table_name = "tablename";

Pour les colonnes:

SELECT character_set_name FROM information_schema.`COLUMNS` C
WHERE table_schema = "schemaname"
  AND table_name = "tablename"
  AND column_name = "columnname";

Vous pouvez facilement définir utf8 sur vos tables si vous utilisez SQLYog.

Faites un clic droit sur db, le tableau, le nom de la colonne et cliquez sur alter option et définissez sur

Base de données Chartset = utf8 Base de données Collation = utf8_general_ci.

Tout simplement profiter ....

Pour lire, écrire et trier correctement le texte arabe dans la base de données mysql en utilisant php, assurez-vous que:

  1. Jeu de caractères MySQL: Unicode UTF-8 (utf8)

  2. Classement des connexions MySQL: utf8_general_ci

  3. vos classements de base de données et de tables sont définis sur: utf8_general_ci ou utf8_unicode_ci

Ensuite, ajoutez ce code dans votre script php lorsque vous vous connectez à db:

mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER SET utf8');

Pour plus de détails

20
Adel Bachene

Nous pouvons convertir la base de données ou la table db en support uft8 avec la requête ci-dessous:

ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE columnname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

J'espère que ça aide !

Lire la suite @

https://kb.mediatemple.net/questions/138/Default+MySQL+character+set+and+collation#gs

http://hollyslog.com/technology/how-to-store-arabic-or-hebrew-characters-mysql-database

10
Aditya P Bhatt

Modifiez les types de classement des tables de base de données en utf8_general_ci ainsi que les classements des champs de table deviennent utf8_general_ci.

enter image description here

4
Nadeem Ijaz

Assurez-vous que votre logiciel client utilise également UTF-8.

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

3
sw0x2A

Essayez ce code:

$conn = new mysqli($server,$username,$password,$dbname);
$conn->set_charset("UTF8");
1
Waseem Khalid
CREATE TABLE mydb.categories         
(category_id tinyint(2) NOT NULL AUTO_INCREMENT
,category_name MEDIUMTEXT NOT NULL
,PRIMARY KEY (category_id)) DEFAULT CHARACTER SET utf8
0
user6121713