java emoji编码转换_emoji表情与unicode编码互转的实现(JS,JAVA,C#)

前几天刚好有需求要把emoji对应的Unicode编码转换成文字,比如1f601对应的这个笑脸😁,但没有找到C#的把1f601转换成文字的方法,用Encoding.Unicode怎么转换都不对,最后直接复制emoji字符,Visual Studio里面竟然直接显示出来了,那就直接用字符吧,都不用转换了,然后不了了之了。

1.表情字符转编码

【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结果一致

【C#】

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

【js】

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

UTF-8结果一致

2.编码转表情字符

【js】

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

【java】

String emojiName = "1f601"; //其实4个字节

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编码互相转换实例

///

///

/// 字符串转Unicode

///

/// 源字符串

/// Unicode编码后的字符串

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();

}

///

/// Unicode转字符串

///

/// 经过Unicode编码的字符串

/// 正常字符串

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)));

}

参考地址:

到此这篇关于emoji表情与unicode编码互转的实现(JS,JAVA,C#)的文章就介绍到这了,更多相关emoji表情与unicode编码互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值