欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • SpringBoot中Bean拷貝及工具類封裝的實現(xiàn)

    SpringBoot中Bean拷貝及工具類封裝的實現(xiàn)

    本文主要介紹了SpringBoot中Bean拷貝及工具類封裝的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SpringBoot如何實現(xiàn)文件下載

    SpringBoot如何實現(xiàn)文件下載

    這篇文章主要介紹了SpringBoot如何實現(xiàn)文件下載問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Kotlin-Coroutines中的async與await異步協(xié)程管理

    Kotlin-Coroutines中的async與await異步協(xié)程管理

    這篇文章主要為大家介紹了Kotlin-Coroutines中的async與await異步協(xié)程管理,提升程序性能解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java實戰(zhàn)之多線程模擬站點(diǎn)售票

    Java實戰(zhàn)之多線程模擬站點(diǎn)售票

    今天帶大家來練習(xí)Java實戰(zhàn),文中多線程模擬站點(diǎn)售票這個問題作了詳細(xì)的介紹,對正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • 阿里云主機(jī)上安裝jdk 某庫出現(xiàn)問題的解決方法

    阿里云主機(jī)上安裝jdk 某庫出現(xiàn)問題的解決方法

    今天安裝jdk到阿里云服務(wù)上,首先看下阿里云是32位還是64位的,如果是32位下載32位的包,如果是64位的下載64位的包,下面與大家分享下安裝過程中遇到問題的解決方法
    2013-06-06
  • SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決

    SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決

    這篇文章主要介紹了SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java switch使用原理及實例解析

    Java switch使用原理及實例解析

    這篇文章主要介紹了Java switch使用及實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • java實現(xiàn)模仿斗地主發(fā)牌

    java實現(xiàn)模仿斗地主發(fā)牌

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)模仿斗地主發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • MyEclipse8.6首次運(yùn)行maven項目圖標(biāo)上沒有小M的標(biāo)識怎么解決

    MyEclipse8.6首次運(yùn)行maven項目圖標(biāo)上沒有小M的標(biāo)識怎么解決

    myeclipse8.6導(dǎo)入maven項目后識別為普通java項目,即項目圖標(biāo)上沒有小M的標(biāo)識。這時是無法直接運(yùn)行的,怎么解決這一問題呢?下面小編給大家?guī)砹私鉀Q方案,需要的朋友參考下吧
    2016-11-11
  • 淺談Java線程間通信方式

    淺談Java線程間通信方式

    這篇文章主要為大家詳細(xì)介紹了Java線程間的通信方式,以代碼結(jié)合文字的方式來討論線程間的通信,感興趣的朋友可以參考一下
    2021-11-11

最新評論