手机使用 图片表情,Emoji表情符号

一 什么是Emoji

emoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)
表情符号现已普遍应用于手机短信和网络聊天软件。
emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情。

在国内的微信和微信中也被采用。

Emoji 全编码表:
http://punchdrunker.github.com/iOSEmoji/table_html/flower.html

http://code.iamcal.com/php/emoji/

[php]

<?php
include(‘emoji.php’);

browser sniffing tells us that a docomo phone

submitted this text

$clean_text = emoji_docomo_to_unified($_POST[message]);

now we want to show it in a desktop browser

$html = emoji_unified_to_html($clean_text);
?>
[/php]

对于公共账号,其实也是一样做的。

公众帐号怎样向用户发送emoji表情

上面已经给出了emoji表情的unified unicode代码对比表,那么这些代码要怎样使用,才干发送出相应的emoji表情呢?假设你仅仅是简单的像使用QQ表情代码那样,直接在文本消息的Content里写emoji表情代码,一定是会原样显示的。

这里须要用到一个Java方法做转换处理,方法的代码例如以下:

[java]
/**

  • emoji表情转换(hex -> utf-16)
    *
  • @param hexEmoji
  • @return
    */
    public static String emoji(int hexEmoji) {
    return String.valueOf(Character.toChars(hexEmoji));
    }

[/java]

方法说明:比如,“自行车”的unicode编码值为U+1F6B2,假设我们要在程序代码中使用“自行车”这个emoji表情,须要这样使用:

String bike = String.valueOf(Character.toChars(0x1F6B2));
事实上前面那个emoji()方法就是对上面这行代码做了个简单的封装而以。如今知道怎样使用emoji表情代码了吧,事实上就是将代码表中的U+替换为0x,再调用emoji方法进行转换,将转换后的结果放在文本消息的Content中,返回给用户就会显示emoji表情了。

以下,我给出一个使用emoji表情的完整演示例子,例如以下:

[java]

import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

/**

  • 核心服务类
    /
    public class CoreService {
    /**
  • 处理微信发来的请求
    *
  • @param request
  • @return
    */
    public static String processRequest(HttpServletRequest request) {
    String respMessage = null;
    try {
    // xml请求解析
    Map<String, String> requestMap = MessageUtil.parseXml(request);

// 发送方帐号(open_id)
String fromUserName = requestMap.get("FromUserName");
// 公众帐号
String toUserName = requestMap.get("ToUserName");

// 回复文本消息
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(fromUserName);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
textMessage.setFuncFlag(0);
textMessage.setContent("自行车" + emoji(0x1F6B2) + " 男性" + emoji(0x1F6B9) + " 钱袋" + emoji(0x1F4B0));
respMessage = MessageUtil.textMessageToXml(textMessage);
} catch (Exception e) {
e.printStackTrace();
}

return respMessage;
}

/**

  • emoji表情转换(hex -> utf-16)
    *
  • @param hexEmoji
  • @return
    */
    public static String emoji(int hexEmoji) {
    return String.valueOf(Character.toChars(hexEmoji));
    }
    }

[/java]

上面代码的作用是:无论用户发送什么类型的消息,都返回包含三个emoji表情的文本消息。假设不明确CoreService类怎么回事,请查看本系列教程的第5篇,或者你仅仅须要认真看第42行代码,就知道怎么样把emoji表情代码放在文本消息的Content中了。最后再来看下执行效果截图: