今天朱瀚给大家带来了这篇国际码和内码的转换在线,区位码转国标码工具干货,以及关于汉字,内码,字符这些的相关干货,既然来了就别走了,好好的静下心把这篇文章阅读完相信你会有一定的收获哦!
我先考一考你,你说这个字符串(ab一2?仯3?4)有多少个字符?
这时候你也许开始数了,123…9个,没错,确实我们肉眼确实是看到了9个,java代码如下:
有没有发现java判断出来的不是9,而是12!!!
那是因为这个字符串中有2个字符ab一2?仯3?4用黄色表示,实际上UTF-8已经满足不了,? 见下图:
java的String是使用UTF-16来表示的,U+0000-U+FFFF都ok,但是只要是下列这个区间的字符都无法用常规手段处理,5位内码的,用length都无法正确判断其长度
CJK Unified Ideographs Extension B (U+20000 through U+2A6DD)
CJK Unified Ideographs Extension C (U+2A700 through U+2B734)
CJK Unified Ideographs Extension D (U+2B740 through U+2B81D)
CJK Unified Ideographs Extension E (U+2B820 through U+2CEA1)
CJK Unified Ideographs Extension F (U+2CEB0 through U+2EBE0)
具体也可以查看官方资料 ,了解unicode,UTF-8,UTF-16,UTF-32的区别。
如下图,可以通过Character中的codePointCount来得到字符数量。
进入主题
jdk自带的Character类特别好用,汉字转内码,内码转汉字具体功能请参考下面的代码
/**
* 字符串转16进制内码
* @param str ab一2?仯3?4
* @return \u61\u62\u4e00\u32\u2b802\u4eef\u33\u2b82f\u34\u34
*/
public static String stringToCodePoints(String str) {
StringBuilder stringBuilder = new StringBuilder();
str.codePoints().forEach(cp -> stringBuilder.append("\u").append(Integer.toHexString(cp)));
return stringBuilder.toString();
}
/**
* 内码转汉字
* @param codePoints \u61\u62\u4e00\u32\u2b802\u4eef\u33\u2b82f\u34\u34
* @return ab一2?仯3?4
*/
public static String codePointsToString(String codePoints) {
StringBuilder stringBuilder = new StringBuilder();
for(String hexCodePoint : codePoints.split("\\u")){
if(StringUtils.isNotBlank(hexCodePoint)) {
stringBuilder.append(codePointToString(Integer.parseInt(hexCodePoint, 16)));
}
}
return stringBuilder.toString();
}
/**
* 十进制转汉字
* @param cp code point 汉字内码
* @return
*/
public static String codePointToString(int cp) {
StringBuilder sb = new StringBuilder();
if (Character.isBmpCodePoint(cp)) {
sb.append((char) cp);
} else if (Character.isValidCodePoint(cp)) {
sb.append(Character.highSurrogate(cp));
sb.append(Character.lowSurrogate(cp));
} else {
sb.append('?');
}
return sb.toString();
}
支持5位编码的在线转换工具
好了,今天就说到这里了,希望对你有帮助,国际码和内码的转换在线「最新区位码转国标码工具」这篇文章让你学习到一些知识的话,那就帮忙分享给你朋友吧!
本文发布者:万事通,不代表寂寞网立场,转载请注明出处:https://www.jimowang.com/p/27176.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jimowangmail@126.com 举报,一经查实,本站将立刻删除。