java 转译mac中表情工具类
2017-03-07 00:00
302 查看
摘要: mac表情转译
public static String encodeMacEmoticon(String ecnodeStr) {
if (StringUtils.isBlank(ecnodeStr)) {
return "";
}
byte[] bytes = null;
byte[] phiz = null;
try {
String word = "[image]";
bytes = ecnodeStr.getBytes("utf-8");
phiz = word.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] bytes2 = encodeMacEmoticonByte(bytes, phiz);
try {
ecnodeStr = new String(bytes2, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return ecnodeStr;
}
private static byte[] encodeMacEmoticonByte(byte[] bytes, byte[] phiz) {
int index = 0;
while (true) {
if (bytes == null) {
return null;
}
if (index >= bytes.length) {
return bytes;
}
byte b = bytes[index];
byte c = (byte) ((b & 0xff) >>> 7);// b&0xff取后8位 c为符号位
if (c == 0) {
index++;
continue;
}
c = (byte) ((b & 0xff) >>> 5);
if (c == 6) {
index += 2;
continue;
}
c = (byte) ((b & 0xff) >>> 4);
if (c == 14) {
index += 2;
continue;
}
if (c == 15) {
byte[] temp = new byte[bytes.length - 4 + phiz.length];
System.arraycopy(bytes, 0, temp, 0, index);
System.arraycopy(phiz, 0, temp, index, phiz.length);
if (index + 4 >= bytes.length) {
return temp;
} else {
System.arraycopy(bytes, index + 4, temp, index + phiz.length, bytes.length - 4 - index);
index += phiz.length;
bytes = temp;
continue;
}
}
index++;
continue;
}
}
public static String encodeMacEmoticon(String ecnodeStr) {
if (StringUtils.isBlank(ecnodeStr)) {
return "";
}
byte[] bytes = null;
byte[] phiz = null;
try {
String word = "[image]";
bytes = ecnodeStr.getBytes("utf-8");
phiz = word.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] bytes2 = encodeMacEmoticonByte(bytes, phiz);
try {
ecnodeStr = new String(bytes2, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return ecnodeStr;
}
private static byte[] encodeMacEmoticonByte(byte[] bytes, byte[] phiz) {
int index = 0;
while (true) {
if (bytes == null) {
return null;
}
if (index >= bytes.length) {
return bytes;
}
byte b = bytes[index];
byte c = (byte) ((b & 0xff) >>> 7);// b&0xff取后8位 c为符号位
if (c == 0) {
index++;
continue;
}
c = (byte) ((b & 0xff) >>> 5);
if (c == 6) {
index += 2;
continue;
}
c = (byte) ((b & 0xff) >>> 4);
if (c == 14) {
index += 2;
continue;
}
if (c == 15) {
byte[] temp = new byte[bytes.length - 4 + phiz.length];
System.arraycopy(bytes, 0, temp, 0, index);
System.arraycopy(phiz, 0, temp, index, phiz.length);
if (index + 4 >= bytes.length) {
return temp;
} else {
System.arraycopy(bytes, index + 4, temp, index + phiz.length, bytes.length - 4 - index);
index += phiz.length;
bytes = temp;
continue;
}
}
index++;
continue;
}
}
相关文章推荐
- JAVA工具类---MACUtil
- java产生随机字符串的各种方法------工具类(包含过滤表情方法)
- JAVA工具类之表情过滤
- Java MacUtil 获取mac地址 工具类
- java使用jdbc连接数据库工具类和jdbc连接mysql数据示例
- java线程:几个实用的线程工具类
- JAVA学习--Collections集合工具类使用
- 同步工具类三:计数信号量(java.util.concurrent.Semaphore)
- java根据身份证号和获取用户年龄和性别的工具类
- java开发中常用的数字工具类
- 验证码图片生成工具类——Captcha.java
- 一个Java应用,三种字体风格(Java, Windows, Mac),真是蛋疼
- (二十四)Java工具类Mutable接口提供可变的存储改变值详解
- java日期格式化工具类
- 一个Java工具类的大集合
- (二十四)Java工具类Mutable接口提供可变的存储改变值详解
- (二十四)Java工具类Mutable接口提供可变的存储改变值详解
- JAVA 并发编程随笔【四】Collections集合工具类(学习并发编程顺带学习)
- JAVA 并发编程随笔【四】Collections集合工具类(学习并发编程顺带学习)
- JAVA 并发编程随笔【四】Collections集合工具类(学习并发编程顺带学习)