最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

emoji表情與unicode編碼互轉(zhuǎn)的實現(xiàn)(JS,JAVA,C#)

 更新時間:2021年01月04日 11:01:57   作者:追極  
這篇文章主要介紹了emoji表情與unicode編碼互轉(zhuǎn)的實現(xiàn)(JS,JAVA,C#),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前幾天剛好有需求要把emoji對應(yīng)的Unicode編碼轉(zhuǎn)換成文字,比如1f601對應(yīng)的這個笑臉😁,但沒有找到C#的把1f601轉(zhuǎn)換成文字的方法,用Encoding.Unicode怎么轉(zhuǎn)換都不對,最后直接復(fù)制emoji字符,Visual Studio里面竟然直接顯示出來了,那就直接用字符吧,都不用轉(zhuǎn)換了,然后不了了之了。

今天搞Markdown編輯器,由于前面GFM的原因,又對編碼進(jìn)行測試,沒查到什么靠譜資料,到時找到很多emoji和Unicode對照表,https://apps.timwhitlock.info/emoji/tables/unicode拿一個笑臉https://apps.timwhitlock.info/unicode/inspect/hex/1F601開刀~

1.表情字符轉(zhuǎn)編碼

【C#】

Encoding.UTF32.GetBytes("😁") -> ["1", "f6", "1", "0"]

【js】

"😁".codePointAt(0).toString(16) -> 1f601

【java】

  byte[] bytes = "😀".getBytes("utf-32");
  System.out.println(getBytesCode(bytes));

 private static String getBytesCode(byte[] bytes) {
    String code = "";
    for (byte b : bytes) {
      code += "\\x" + Integer.toHexString(b & 0xff);
    }
    return code;
  }

UTF-32結(jié)果一致

【C#】

Encoding.UTF8.GetBytes("😁") -> ["f0", "9f", "98", "81"]

【js】

encodeURIComponent("😁") -> %F0%9F%98%81

UTF-8結(jié)果一致

2.編碼轉(zhuǎn)表情字符

【js】

String.fromCodePoint('0x1f601')  utf-32

【java】 

 String emojiName = "1f601"; //其實4個字節(jié)
  int emojiCode = Integer.valueOf(emojiName, 16);
  byte[] emojiBytes = int2bytes(emojiCode);
  String emojiChar = new String(emojiBytes, "utf-32");
  System.out.println(emojiChar);



  public static byte[] int2bytes(int num){
    byte[] result = new byte[4];
    result[0] = (byte)((num >>> 24) & 0xff);//說明一
    result[1] = (byte)((num >>> 16)& 0xff );
    result[2] = (byte)((num >>> 8) & 0xff );
    result[3] = (byte)((num >>> 0) & 0xff );
    return result;
  }

c# 漢字和Unicode編碼互相轉(zhuǎn)換實例

/// <summary>
/// <summary>
/// 字符串轉(zhuǎn)Unicode
/// </summary>
/// <param name="source">源字符串</param>
/// <returns>Unicode編碼后的字符串</returns>
public static string String2Unicode(string source)
{
 byte[] bytes = Encoding.Unicode.GetBytes(source);
 StringBuilder stringBuilder = new StringBuilder();
 for (int i = 0; i < bytes.Length; i += 2)
 {
 stringBuilder.AppendFormat("\\u{0}{1}", bytes[i + 1].ToString("x").PadLeft(2, '0'), bytes[i].ToString("x").PadLeft(2, '0'));
 }
 return stringBuilder.ToString();
}
 
/// <summary>
/// Unicode轉(zhuǎn)字符串
/// </summary>
/// <param name="source">經(jīng)過Unicode編碼的字符串</param>
/// <returns>正常字符串</returns>
public static string Unicode2String(string source)
{
 return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(
   source, x => string.Empty + Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16)));
}

參考地址:

https://www.jianshu.com/p/8a416537deb3

https://blog.csdn.net/a19881029/article/details/13511729

https://apps.timwhitlock.info/emoji/tables/unicode

到此這篇關(guān)于emoji表情與unicode編碼互轉(zhuǎn)的實現(xiàn)(JS,JAVA,C#)的文章就介紹到這了,更多相關(guān)emoji表情與unicode編碼互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java利用Netty時間輪實現(xiàn)延時任務(wù)

    Java利用Netty時間輪實現(xiàn)延時任務(wù)

    時間輪是一種可以執(zhí)行定時任務(wù)的數(shù)據(jù)結(jié)構(gòu)和算法。本文將為大家詳細(xì)講解一下Java如何利用Netty時間輪算法實現(xiàn)延時任務(wù),感興趣的小伙伴可以了解一下
    2022-08-08
  • springboot國際化多語言配置方式

    springboot國際化多語言配置方式

    這篇文章主要介紹了springboot國際化多語言配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java SpringBoot微服務(wù)框架驗證碼報錯問題解決方案

    Java SpringBoot微服務(wù)框架驗證碼報錯問題解決方案

    這篇文章主要介紹了Java SpringBoot微服務(wù)框架驗證碼報錯問題解決方案,包括dockerfile容器操作和完整dockerfile,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Java中的接口知識匯總

    Java中的接口知識匯總

    本文給大家匯總介紹了在java中的接口知識,包括為什么要使用接口、什么是接口、抽象類和接口的區(qū)別、如何定義接口以及定義接口注意點,希望大家能夠喜歡
    2016-04-04
  • Java手寫線程池的實現(xiàn)方法

    Java手寫線程池的實現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Java手寫線程池的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 常見的java面試題

    常見的java面試題

    這篇文章主要為大家詳細(xì)介紹了常見的java面試題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 基于idea解決springweb項目的Java文件無法執(zhí)行問題

    基于idea解決springweb項目的Java文件無法執(zhí)行問題

    這篇文章給大家介紹了基于idea解決springweb項目的Java文件無法執(zhí)行問題,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Java中的StringJoiner類使用示例深入詳解

    Java中的StringJoiner類使用示例深入詳解

    這篇文章主要為大家介紹了Java中的StringJoiner類使用示例深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • springboot中事務(wù)管理@Transactional的注意事項與使用場景

    springboot中事務(wù)管理@Transactional的注意事項與使用場景

    今天小編就為大家分享一篇關(guān)于springboot中事務(wù)管理@Transactional的注意事項與使用場景,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • maven項目在實踐中的構(gòu)建管理之路的方法

    maven項目在實踐中的構(gòu)建管理之路的方法

    這篇文章主要介紹了maven項目在實踐中的構(gòu)建管理之路的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05

最新評論

涟源市| 西峡县| 昔阳县| 巧家县| 太保市| 吴旗县| 阳东县| 金山区| 三门峡市| 清镇市| 涟水县| 大余县| 化德县| 怀安县| 莲花县| 沾益县| 西城区| 高台县| 婺源县| 阿拉善左旗| 丰台区| 平乐县| 孟津县| 武山县| 资溪县| 特克斯县| 富蕴县| 昔阳县| 繁峙县| 万山特区| 塔河县| 灵丘县| 股票| 白玉县| 宁城县| 榆社县| 临安市| 阿克| 安庆市| 黑水县| 聂拉木县|