I inserted some data from a letters
field in database1.table1
to new_letters
field in database2.table2
by using PHP, but all the values are changed to question marks like ????? ?????? ????? ??????? ?? ??? ???? ????? ?????
in the new_letters
field. Structure of the letters
is (Type:longtext, Collation: utf8_general_ci), and the structure of the new_letters
is (Type:mediumtext, Collation: utf8_unicode_ci). Also, I need to mention that even changing both collations to utf8_unicode_ci or utf8_general_ci did not solve the problem. Could you please let me know what is the problem?
Asked
Active
Viewed 113 times
1

Sami
- 1,473
- 1
- 17
- 37
2 Answers
4
You need to make sure your collation and character sets are consistent. For instance, you have two different collations (utf8_general_ci
and utf8_unicode_ci
), so you should convert them both to the same collation. I believe UTF-8 supports Arabic letters.
So, CHARACTER SET utf8 and COLLATE utf8_general_ci

Alex W
- 37,233
- 13
- 109
- 109
-
I changed both fields to `utf8_general_ci` but there was no change, still all the same problem – Sami Apr 09 '14 at 16:20
-
Do I need to apply specific condition before the query execution? – Sami Apr 09 '14 at 16:22
-
2@Apiah: you also need to make sure your php<->mysql connection is set for utf8 as well. ALL stages of the entire process have to set for utf8, or you'll get mangled text. – Marc B Apr 09 '14 at 16:28
1
You need to make sure your entire chain from the connection, to the database, to the tables is all UTF8 clean. I have a detailed answer to a similar question here.
But in your case, check the actual MySQL server my.cnf
file. The following would set the whole chain to UTF-8:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Community
- 1
- 1

Giacomo1968
- 25,759
- 11
- 71
- 103
-
1thanks for your answer. I applied your settings to `my.cnf` file, but still there is no change, is there something else I'm missing? – Sami Apr 09 '14 at 16:57
-
1I also added this to the top of my PHP file `mysqli_query($dbcon, "SET NAMES 'utf8'");` in addition to your settings in `my.conf` and now is working fine, – Sami Apr 09 '14 at 17:24
-
@Apiah: “I applied your settings to my.cnf file, but still there is no change” Did you restart the MySQL server so the changes would take? – Giacomo1968 Apr 09 '14 at 18:03