2011-07-28 15 views
20

Zmieniłem zestaw znaków tabel i kolumn, otrzymuję tekst arabski jako ???? znaków w bazie danych MySQLZapisywanie danych w języku arabskim w bazie danych MySQL

tutaj jest konstrukcja stołu

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; 

Kiedy znowu ogień kwerendę wybierającą to pokazuje ???? jako tekst?

Czy ktoś może mi powiedzieć, gdzie robię źle?

+3

Która wersja mysql? Jak wyświetlasz swój tekst? czy możesz podać kod, którego używasz do odzyskania danych? Używam tego samego kodowania i sortowania i działa dobrze dla mnie. – nakhli

+0

Mysql wersja 5.0.45. za pomocą wybierz zapytanie .. wybierz * z poll_categories – Romani

+0

To działa dla mnie w MySQL WB – gbn

Odpowiedz

23

wstawić dane arabską ręcznie do swojego phpMyAdmin.

Najpierw sprawdza się albo baza danych, nazwa tabeli i kolumny jest ustawiona utf8, czy nie. Jeśli nie są ustawione na utf8, to najpierw ustaw je, możesz wstawić dane arabskie do swojej tabeli db.

MOŻESZ SPRAWDZIĆ KAŻDEGO Z TYCH PONIŻSZYCH PRZYCZYNY.

dla bazy danych:

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

Na tablicach:

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"; 

dla kolumn:

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

Możesz łatwo ustawić utf8 do tabel, jeśli używasz SQLyog.

Wystarczy kliknąć prawym przyciskiem myszy na db, stół, nazwę kolumny i kliknij opcję alter i ustawić

Database Chartset = utf8 Database zestawień = utf8_general_ci.

prostu cieszyć ....

+0

specjalnie, proszę sprawdź kodowanie znaków w poszczególnych kolumnach, to właśnie sprawiło, że przez długi czas drapałem się po głowie. –

+0

Prostsze z po prostu 'SHOW CREATE TABLE tablename;' –

17

Aby czytać, pisać i tekst rodzaj arabski w bazie danych MySQL za pomocą PHP poprawnie, upewnij się, że:

  1. MySQL charset: UTF-8 Unicode (utf8)

  2. Łączenie połączeń MySQL: utf8_general_ci

  3. Twoje zbiory danych i tabel są se T: utf8_general_ci lub utf8_unicode_ci

Następnie dodaj ten kod do skryptu php po podłączeniu do DB:

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

For more details

+0

Nie używaj przestarzałego' mysql_query'; przełącz na "mysqli" lub "PDO". –

7

Możemy konwertować bazy danych lub db stół do uft8 podtrzymujące z poniższym zapytaniem:

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 

Chmiel e to pomaga!

Czytaj więcej @

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

4

zmienić typy sortowania tabel bazy danych, a także do utf8_general_ci pól tabeli sortowania zmieni się utf8_general_ci.

enter image description here

+0

Dzięki @Nadeem Ijaz –

Powiązane problemy