2011-12-26 75 views
27

Tôi muốn chuyển đổi Biểu tượng cảm xúc thành ký tự unicode trong iOS 5.iOS 5: Cách chuyển đổi Biểu tượng cảm xúc thành ký tự unicode?

Ví dụ: chuyển đổi smiling face with open mouth and cold sweat thành \ue415.

Tôi đã đi đến NSStringEncoding trong NSString Class Reference.

Trong iOS 4, NSUTF16BigEndianStringEncodingNSUTF32BigEndianStringEncoding đã cho tôi <e415><0000e415>, tương ứng, khá gần với những gì tôi muốn.

Trong iOS 5, kết quả khác nhau. Nó gaves <d83dde04><0001f604>.

Làm cách nào để có được \ue415 cho smiling face with open mouth and cold sweat trong iOS 5? Cảm ơn bạn.

Trả lời

14

\ue415 là một phần của mã hóa cũ cho biểu tượng cảm xúc và dành riêng cho một số nhà cung cấp dịch vụ của Nhật Bản. SoftBank, NTT và docomo đều có bộ ký tự biểu tượng cảm xúc riêng.

iOS 5 đã chuyển sang hỗ trợ Unicode 6.0 mới được chỉ định cho các ký tự biểu tượng cảm xúc và <0001f604> điểm mã Unicode cho ký tự đó. Mục nhập wikipedia về điều này tham chiếu đến tệp ánh xạ EmojiSources.txt mà bạn sẽ cần phải sử dụng để tự ánh xạ nếu bạn thực sự cần có các mã ký tự sử dụng riêng tư cũ.

http://en.wikipedia.org/wiki/Emoji

+1

Vâng, tôi muốn sử dụng mã hóa di sản của Emoji vì nó có vẻ như ứng dụng của tôi sẽ không làm việc với unicode 6.0 mới, nó có thể đọc '\ ue415' nhưng không đọc' \ U0001f604'. Bạn có thể chỉ cho tôi cách sử dụng tệp ánh xạ _EmojiSources.txt_ mà bạn đã cung cấp không? – Protocole

+1

một số khác là http://arashnorouzi.wordpress.com/2011/08/31/adding-graphics-and-emoji-characters-s-apple-push-notifications/ – GameLoading

4

nếu biểu tượng cảm xúc của bạn không thực hiện chuyến đi khứ hồi (từ ios đến máy chủ phụ trợ và quay lại ios), thì bạn không nên gặp bất kỳ vấn đề nào (ít nhất 4.2+) xử lý mã hóa chính xác và bạn không ' t phải làm bất cứ điều gì. nhưng nếu ứng dụng của bạn tương tác với máy chủ, bạn có nghi ngờ rằng giá trị trả về của máy chủ của bạn sai không? tức là json đã mã hóa sai.

tôi đã cùng một vấn đề, sau khi đào trong nhiều giờ và cuối cùng tìm thấy câu trả lời này làm việc cho tôi: https://stackoverflow.com/a/8339255/1090945

Nếu bạn đang sử dụng đường ray như máy chủ của bạn, đây là tất cả các bạn cần phải làm. Không cần phải làm bất cứ điều gì trong ios/xcode, chỉ cần vượt qua NSString mà không làm bất kỳ công cụ mã hóa UTF8/16 cho máy chủ.

Đăng lại cửa hàng mã chính xác, chỉ khi bạn gửi phản hồi json về máy khách ios của bạn, giả sử bạn thực hiện json: @message, mã hóa json có vấn đề.

bạn có thể kiểm tra xem bạn đang gặp vấn đề mã hóa json theo đường ray của bạn giao diện điều khiển bằng cách làm bài kiểm tra đơn giản trong giao diện điều khiển

test = {"smiley"=>"u{1f604}"} 

test.to_json

của bạn nếu nó in ra "{\" cười \ ": \" \ uf604 \ "}" (chú ý 1 bị mất), sau đó bạn có vấn đề này. và bản vá từ liên kết sẽ sửa nó.

90

Vui lòng thử này:

  1. Chuyển đổi Emoji để Unicode

    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding]; 
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    
  2. Rất dễ dàng để chuyển đổi unicode để Emoji

    NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding]; 
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
    
+1

Làm cách nào để hiển thị Biểu tượng cảm xúc trở lại đúng định dạng? –

+0

Tôi muốn biết câu trả lời để lấy lại các ký tự ... – fvisticot

+1

Giải pháp này cùng với @ yadav hoạt động rất tốt trên tất cả các phiên bản iOS. Nhưng tôi có một yêu cầu cụ thể mà phải lưu trữ các chuỗi trên một máy chủ và cho phép tìm kiếm chuỗi. Trong trường hợp này, các ký tự không phải biểu tượng cảm xúc sẽ không được mã hóa thành '\ u ..' làm cho toàn bộ chuỗi không thể đọc được và máy không thể tìm kiếm được. Có cách nào để thực hiện chuyển đổi cho các ký tự không phải biểu tượng cảm xúc không? –

7

Chuyển đổi trở lại: -

NSData *newdata=[recievedstring dataUsingEncoding:NSUTF8StringEncoding 
allowLossyConversion:YES]; 
    NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding]; 
7

emoji dispalying trong UILabel:

NSString *bellEmojiString = @"U+1F514"; 

label.text = [NSSting stringWithFormat:@"Table: %@", @"\U0001F514"]; 

bạn nên cẩn thận thay thế + với 3 zero chữ số

+0

nó không hoạt động đối với chuỗi Biểu tượng cảm xúc như U + 26F5 – Liangjun

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