2012-03-30 40 views
5

Khi ký tự Emoji được đặt bằng mã bên dưới:Tại sao Biểu tượng cảm xúc không thể hiển thị chính xác trong UITextField?

self.textField.text = @"\ue415"; 

Nó chỉ hiển thị dưới dạng hình vuông. Nhưng khi tôi nhập một Biểu tượng cảm xúc từ bàn phím, nó sẽ hiển thị chính xác. Có chuyện gì vậy?

PS: Tôi đang sử dụng IOS 5,1

Text View with Emoji Characters

+2

Kiểm tra câu trả lời của tôi tại: http://stackoverflow.com/questions/9886903/iphone-how-to-write-symbol-on-a-label/9887028#9887028 – Devang

+1

Tôi đã tìm ra giải pháp. Trong ios5.1, bạn phải sử dụng Unicode 6.0, đây là ánh xạ giữa các ký tự Unicode 6.0 và ký tự Softbank PUA: http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS. txt – yakexi

+3

giải pháp: self.textField.text = @ "\ U0001F604"; – yakexi

Trả lời

2

Trong các phiên bản cũ của iOS Emoji các nhân vật đều trong việc sử dụng Diện tích Unicode tư nhân, mà như tên cho thấy là một bộ Unicode các điểm mã rõ ràng không có bất kỳ ký tự liên quan nào. Tuy nhiên, tiêu chuẩn Unicode đã được cập nhật để bao gồm một số lượng lớn các ký tự Emoji, vì vậy iOS hiện sử dụng các ký tự này, như Mac OS X.

Bạn có thể xem danh sách tất cả Biểu tượng cảm xúc Unicode trong biểu đồ mã tại www .unicode.org/charts eg http://www.unicode.org/charts/PDF/U1F600.pdf và những điều này cũng cho bạn biết mỗi Biểu tượng cảm xúc thực sự có ý nghĩa gì để đại diện.

Không có biểu tượng cảm xúc Unicode nào trong Mặt phẳng đa ngôn ngữ cơ bản của thông số Unicode, có nghĩa là chúng quá lớn để vừa với một bản unichar duy nhất của iOS. Vì vậy, khi chúng được lưu trữ trong một NSString mỗi biểu tượng cảm xúc sẽ bao gồm nhiều unichars - một cái gì đó để được nhận thức của nếu bạn cố gắng lặp qua các ký tự trong một chuỗi.

Nếu bạn có mã như

NSString *emoji [email protected]"\U0001F604"; 
NSString *ascii = @"A"; 
NSLog(@"emoji.length %d, ascii.length %d", emoji.length, ascii.length); 

Bạn sẽ thấy điều này trong đầu ra

2013-03-08 14:42:22.841 test[23980:c07] emoji.length 2, ascii.length 1 

nơi khuôn mặt tươi cười đơn VỚI MỞ MIỆNG và mỉm cười EYES emoji dài hai unichars, không phải là một như chúng ta có thể mong đợi.

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