Emoji表情在网页中显示

最近遇到一个项目,客户手机上发送的表情要在电脑网页中显示,没有找到简便方法,于是有了以下方案。

由于Emoji表情传到后台是“口”,怎么找出接收数据中的表情是关键,各种搜索后,我用下面的正则表达式匹配到所有的Emoji表情,然后进行替换成图片。

匹配表情的正则表达式

Regex reg = new Regex("[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u2600-\u27ff]");

 

参考资料

http://www.emoji-cheat-sheet.com/(官方网站)        

http://apps.timwhitlock.info/emoji/tables/unicode#block-4-enclosed-characters

http://bbs.csdn.net/topics/390055415

https://github.com/xiongxin2oo8/emoji-cheat-sheet.com

http://code.iamcal.com/php/emoji/(PHP-emoji转换表)

(10款受欢迎的Github Emoji开源库)

emoji表情来自

http://www.emoji-cheat-sheet.com/(官方网站、名称为英文版、在线)   

https://github.com/Ranks/emojify.js(名称为英文版 png)

https://punchdrunker.github.io/iOSEmoji/table_html/index.html(名称为utf16转10进制版)

emoji表情 json 对照文件来自

https://github.com/Ranks/emojify.js utf-16 name 对应 ios6(下文中Emoji_ios6)

https://github.com/github/gemoji 名称表情对应(下文中Emoji_g)

替换方式:

1、表情替换为图片  表情英文名称版

Regex reg = new Regex("[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u2600-\u27ff]");

MatchCollection match = reg.Matches(test_data);

string emoji_path = Server.MapPath("/Content/others/emoji.json");

StreamReader read = new StreamReader(emoji_path, Encoding.UTF8);

string json = read.ReadToEnd();

List<Emoji_g> emoji_list = JsonConvert.DeserializeObject<List<Emoji_g>>(json);

//StringBuilder sr = new StringBuilder();

//for (int i = 0; i < content.Length; i++)

//{

//    sr.Append("\\u");

//    sr.Append(((int)content[i]).ToString("X"));

//}

string emoji_str = string.Empty;

string emoji_value = string.Empty;

foreach (Match item in match)

{

StringBuilder sresult = new StringBuilder();

for (int i = 0; i < item.Length; i++)

{

sresult.Append(((int)item.Value[i]).ToString("X"));

}

Emoji_g emoji = emoji_list.Where(e => e.unicode == sresult.ToString()).FirstOrDefault();

Emoji_g e_teste = emoji_list.Where(e=>e.aliases[0]=="china").FirstOrDefault();

if (emoji != null)

{

test_data = test_data.Replace(item.Value, "<img style=‘width:22px‘ src=‘http://www.emoji-cheat-sheet.com/graphics/emojis/" + emoji.aliases[0] + ".png‘ />");

emoji_str = string.Empty;

emoji_value = string.Empty;

}

else

{

emoji_str += sresult.ToString();

emoji_value += item.Value;

emoji = emoji_list.Where(e => e.unicode == emoji_str).FirstOrDefault();

if (emoji != null)

{

test_data = test_data.Replace(emoji_value, "<img style=‘width:22px‘ src=‘http://www.emoji-cheat-sheet.com/graphics/emojis/" + emoji.aliases[0] + ".png‘ />");

emoji_str = string.Empty;

emoji_value = string.Empty;

}

}

}

return Content(test_data);

2、表情名称为10进制数字版

Regex reg = new Regex("[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u2600-\u27ff]");

MatchCollection match = reg.Matches(content);

string emoji_path = Server.MapPath("/Content/others/emoji_ios6.json");

StreamReader read = new StreamReader(emoji_path, Encoding.UTF8);

string json = read.ReadToEnd();

List<Emoji_ios6> emoji_list = JsonConvert.DeserializeObject<List<Emoji_ios6>>(json);

//StringBuilder sr = new StringBuilder();

//for (int i = 0; i < content.Length; i++)

//{

//    sr.Append("\\u");

//    sr.Append(((int)content[i]).ToString("X"));

//}

foreach (Match item in match)

{

StringBuilder sresult = new StringBuilder();

for (int i = 0; i < item.Length; i++)

{

sresult.Append(((int)item.Value[i]).ToString("X"));

}

Emoji_ios6 emoji = emoji_list.Where(e => e.utf16 == sresult.ToString()).FirstOrDefault();

if (emoji != null)

content = content.Replace(item.Value, "<img style=‘width:22px‘ src=‘/content/emoji/" + Convert.ToInt32(emoji.codepoint, 16) + ".png‘ />");

}

return content;

时间: 2024-10-11 04:03:42

Emoji表情在网页中显示的相关文章

如何在网页中显示pdf

用如下的html代码即可(例子见http://www.cnblogs.com/zhangzujin/p/3768592.html): <div class="postBody"> <div id="cnblogs_post_body"> <p><iframe src="您要展示的pdf的网址" width="680" height="680"></ifr

当在网页中显示文本过长该怎么办?

当在网页中显示文本过长该怎么办? 当我们在设计网页页面的时候,有时候肯定会遇到这种情况,我们要显示的文本超出了我们元素的宽度.这时候调宽元素的width固然是可以的,但是太宽了又不太美观了.我们可能会想能不能不改变元素的width,让超出的部分隐藏掉,然后鼠标移动到文本上的时候把全部的内容再显示出来.下面我们就来说说CSS中能够实现这种效果的方式... 代码如下,各个样式的注释已经在代码中 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans

如何在浏览器网页中显示word文件内容

如何在浏览器网页中显示word文件内容 把word文件读到byte[]中,再Response.OutputStream.Write(bytes)到客户端去 Page_Load事件中写: //FileStream   fs   =   new   FileStream("c:\\1.doc",   FileMode.Open,   FileAccess.Read);  FileStream fs = new FileStream(Server.MapPath("files\\1

非常好的在网页中显示pdf的方法

今天有一需求,要在网页中显示pdf,于是立马开始搜索解决方案,无意中发现一个非常好的解决方法,详见http://blogs.adobe.com/pdfdevjunkie/web_designers_guide. 其实就光看这个网站也足够了,http://www.pdfobject.com/. 记录一下主要代码: <script type="text/javascript" src="scripts/pdfobject/pdfobject.js"><

让tomcat 日志网页中显示

长话短说,将tomcat日志在网页上显示出来的办法有很多,通过用不同的软件就可以实现,但是最简单的还是在本地几条命令完事了. 同分区的话可以用硬链接实现 首先查看你的web根目录:vim tomcat/conf/server.xml 找到 <Context docBase="****这一行并进入其指定的根目录中,在根目录里执行  ln /usr/local/tomcat/logs/catalina.out . 这样会在你当前的目录里产生一个catalina.out链接文件,重启tomcat

网页中显示pdf

1.<embed width="800" height="600" src="test_pdf.pdf"> </embed> 通过的浏览器:360.Firefox.IE.Chrome 2.<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="600"

在网页中显示CHM (c# csharp .net asp.net winform)

CHM即“已编译的帮助文件”,主要由.hhc(目录文件)..hhk(索引文件)以及相应的帮助主题文件(.html,.htm)这些内容编译而成. 方法对比 在网页中显示CHM内容,大致有以下几种办法: 使用某些工具来反编译,把CHM文件还原成以上相关的文件,并通过hhc文件来列出目录,内容链接到相应的html文件 依然是反编译这些文件,把相关目录及html文件内容直接存到数据库中 直接解析chm文件 这些方法有优点也有缺点: 方法1的优点是方便快捷:缺点也很明显,分散的html不便于管理也不利于搜

在网页中显示html代码

string str = "<div>aaa</div>"; this.Literal1.Text = string.Format("<pre>{0}</pre>", str.Replace("<", "<").Replace(">", ">")); string str = "<div>中国&

网页中显示pdf的方法

非常好的在网页中显示pdf的方法 今天有一需求,要在网页中显示pdf,于是立马开始搜索解决方案,无意中发现一个非常好的解决方法,详见http://blogs.adobe.com/pdfdevjunkie/web_designers_guide. 其实就光看这个网站也足够了,http://www.pdfobject.com/ 记录一下主要代码: <script type="text/javascript" src="scripts/pdfobject/pdfobject.