2012-09-12 39 views
9

Tôi đang cố gắng chèn dấu ♥ vào bảng MySQL bằng PHP. Nó xuất phát từ một trường đầu vào.Không thể chèn ký tự ♥ vào bảng MySQL

Bộ ký tự của bảng là utf8_general_ci và trong PHP tôi sử dụng mysql_query("SET NAMES 'utf8'"); ngay sau khi kết nối được thực hiện.

Nhưng ♥ chỉ trở thành '?' khi được chèn vào.

Tôi cũng đã cố gắng chèn ♥ vào bảng từ phpMyAdmin, nhưng nó sẽ trả về lỗi này: '?'

Warning: #1366 Incorrect string value: '\xE2\x99\xA5' for column 'subject' at row 1 

Kết quả cũng là thay vì ♥.

Mọi ý tưởng về nguyên nhân gây ra điều này?

+5

Hãy thử làm theo [Xử lý Unicode mặt trước để quay lại trong ứng dụng web] (http://kunststube.net/frontback/) – deceze

+0

thử http://stackoverflow.com/questions/7781103/sql-server-set- ký tự-đặt-không-collation – Sathish

Trả lời

23

Điều này là do không tương thích character set and collation được xác định trên cột của bảng.

Hãy thử changing character set bảng hoặc cột của bạn thành UTF8.

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8; 

hoặc

ALTER TABLE table_name MODIFY col VARCHAR(255) CHARACTER SET utf8; 
+0

Ohh! Tôi vừa thay đổi bảng mã của bảng, chứ không phải các cột ... Thay đổi các cột thành utf8, và bây giờ mọi thứ đều hoạt động! Cảm ơn! – Elias

+0

Bạn được chào đón! :) – Omesh

0

thử điều này:

ini_set('default_charset', 'utf-8'); 

trong file php của bạn và thiết lập:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

và chek trong bạn cơ sở dữ liệu cho collation để utf8_general_ci

+0

default_charset và meta-tag sẽ không hoạt động, vì tôi thấy '?' trong phpMyAdmin. – Elias

+0

hơn cố gắng đặt mã hóa ký tự thông qua ini_set() –

Các vấn đề liên quan