2012-04-14 38 views
8

Sau khi đọc tất cả các chủ đề về biểu tượng cảm xúc trên SO, tôi bị ràng buộc để yêu cầu trợ giúp. Câu hỏi có vẻ gần như giống nhau: Tôi nhận được một Ứng dụng iPhone gửi qua biểu tượng cảm xúc PHP tới MySQL DB, tôi có thể thấy một số biểu tượng trên hồ sơ, ví dụ như "ô" và "đám mây" nhưng không phải (khuôn mặt giận dữ, khuôn mặt tươi cười) khác).Biểu tượng cảm xúc trên MySQL và PHP: tại sao một số biểu tượng có khác không?

Tại sao một số có và không?

  • MySQL Collation: utf8mb_unicode_ci
  • Bảng đối chiếu: utf8mb_unicode_ci
  • Field, varchar, đối chiếu: utf8mb_unicode_ci

PHP thiết lập:

mysql_query("SET CHARACTER SET utf8mb4"); 
    mysql_query("SET NAMES utf8mb4"); 

Các biểu tượng không thể hiện bên trong kỷ lục được hiển thị dưới dạng dấu chấm hỏi "?"

Trả lời

11

Một số biểu tượng cảm xúc được mã hóa bằng 3 byte. Nếu máy tính của bạn hỗ trợ biểu tượng cảm xúc, dưới đây là biểu tượng cảm xúc 3 byte:

☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎➿✂⚽⚾⛳ ♠ ♥ ♣ ♦ 〽☕⛪⛺⛲⛵✈⛽⚠ ♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣ # ⃣⬆⬇⬅➡↗↖↘↙ ◀ ▶ ⏪⏩♿㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌ © ® ™

Phần còn lại được mã hóa bằng 4 byte và sẽ không hoạt động trừ khi bạn cập nhật mysql thành utf8mb4. Có vẻ như bạn không nâng cấp đầy đủ lên utf8mb4 theo một cách nào đó.

+0

Cảm ơn bạn rất nhiều Jake, tôi sẽ tìm kiếm theo hướng của bạn. Ngay bây giờ tôi khá chắc chắn rằng tôi đã chuyển đổi các trường mục tiêu và bảng trong collation phải nhưng tôi phải bỏ lỡ một cái gì đó. Tôi sẽ cập nhật chủ đề này. Thanx – Fabrizio

+0

Tôi đã xác minh và bạn nói đúng 3 byte biểu tượng cảm xúc được thể hiện ok. Những gì tôi nhớ là nơi tôi cần phải thay đổi đối chiếu. Các lĩnh vực mà tôi phải ghi lại các biểu tượng cảm xúc đã có utf8mb4_unicode_ci collation. Bảng chứa trường đó đã có đối chiếu utf8mb4_unicode_ci. Trong Cài đặt chung (phpMyAdmin) tôi thấy rằng collation MySQL là utf8_general_ci và khi tôi cố gắng để thay đổi để utf8mb4_unicode_ci nó dường như tự động trở lại các thiết lập trước đó. Tôi không biết nếu vấn đề là vì lý do này. Tôi sẽ tiếp tục tìm kiếm. – Fabrizio

+3

@Fabrizio Tôi đã viết [một hướng dẫn chi tiết về cách nâng cấp từ 'utf8' thành' utf8mb4'] (http://mathiasbynens.be/notes/mysql-utf8mb4) - có lẽ nó sẽ giúp bạn. –

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