unicode码表转换(输入某个字符)

让我先考考你。你说这一串(ab-2?3?4)有多少个字符?这时你可以开始数数,123 …是的,我们确实用肉眼看到了9。java代码如下所示:有没有发现java判断的不是9,而是12!!!那是因为这个字符串里有2个字符ab-2?3?事实上,UTF 8号不能满足它。见下图:Java的字符串用UTF-1...

让我先考考你。你说这一串(ab-2?3?4)有多少个字符?

这时你可以开始数数,123 …是的,我们确实用肉眼看到了9。java代码如下所示:

有没有发现java判断的不是9,而是12!!!

那是因为这个字符串里有2个字符ab-2?3?事实上,UTF 8号不能满足它。见下图:

Java的字符串用UTF-16表示,U+0000-U+FFFFF都可以,但是只要后面区间的字符不能用常规手段处理,就不能用长度正确判断5位内码的长度。

中日韩统一表意文字扩展B (U+20000到U+2A6DD)中日韩统一表意文字扩展C (U+2A700到U+2B734)中日韩统一表意文字扩展D (U+2B740到U+2B81D)中日韩统一表意文字扩展E (U+2B820到U+2CEA1)中日韩统一表意文字扩展F (U+2CEB0到U+2EBE0)

具体来说,你也可以查看官方数据,了解unicode、UTF-8、UTF-16和UTF-32之间的区别。

如下图,字符数可以通过character中的codePointCount得到。

进入主题

Jdk自己的角色类特别好用。汉字转换为内码的具体功能请参考以下代码。

/* * *字符串转换为十六进制代码* @param str ab-2?3?4 * @ return \ \ u61 \ \ u62 \ \ u4e 00 \ \ u32 \ \ u2b 802 \ \ u4eef \ \ u33 \ \ u2b 82f \ \ u34 \ \ u34 */公共静态字符串stringToCodePoints(String str){ StringBuilder StringBuilder = new StringBuilder();str.codePoints()。forEach(cp ->stringbuilder . append("\ \ u & # 034).append(integer . tohexstring(CP)));返回stringbuilder . tostring();}/* * *内码转汉字* @ param code points \ \ U61 \ \ U62 \ \ u4e 00 \ \ U32 \ \ u2b 802 \ \ u 4 eef \ \ U33 \ \ u2b 82 f \ \ U34 \ \ U34 3?4 */public static String codePointsToString(String codePoints){ StringBuilder StringBuilder = new StringBuilder();for(String hexcode point:code points . split("\ \ \ \ u & # 034)){ if(string utils . isnotblank(hexcode point)){ stringbuilder . append(codePointToString(integer . parse int(hexcode point,16)));} }返回stringbuilder . tostring();}/* * *十进制转汉字* @param cp码位汉字内码* @ return */public static string码位tostring(intcp){ stringbuilder *** = new stringbuilder();if(character . i***mpcodepoint(CP)){ *** . append((char)CP);} else if(character . isvalidcodepoint(CP)){ *** . append(character . highsurrogate(CP));*** . append(character . low surrogate(CP));} else { *** . append('?');} return *** . tostring();}支持5位编码的在线转换工具

http://***.jdkba.com/char

本文来自安安分分做我自我投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/571091.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-31
下一篇 05-31

相关推荐

  • js正则表达式语法大全 js正则验证特殊字符

    0.指导在正文开始之前,先说一下什么是正则表达式,为什么要用正则表达式。在我看来,正则表达式是一个程序可以识别的规则。有了这个规则,程序可以帮助我们判断某些字符是否符合我们的要求。但是我们为什么要使用正则表达式呢?我们来看一个常规的业务场景,验证一串字符是否

    2023-07-22 22:17:01
    542 0
  • c语言字符类型包括哪些 3分钟了解c语言基本数据类型

    C语言支持的基本数据类型通过前面的例子分析,我们知道了房子的类型,决定了房子的属性。比如一套一居室的房子,有空个房间;两室一厅的房子空。同样,在C语言中,提供了“数据类型”,可以定义变量。不同数据类型定义的变量有不同的存储空和用法。C支持的基本数据类型有:(1)

    2023-07-16 02:35:01
    720 0
  • c语言字符串定义 c语言字符和字符串区别

    想了解C语言中数组和指针的关系?这篇文章将占用你三分钟的时间。看完一定会有收获!排列将数组声明为数据类型名称[常量大小],并将数据类型的一个或多个实例分组到一个可寻址的位置。常量大小可以是一个表达式,但该表达式必须计算为常量,例如:#定义最大尺寸16…int l

    2023-07-07 07:51:01
    1004 0
  • unicode码表转换(输入某个字符)

    让我先考考你。你说这一串(ab-2?3?4)有多少个字符?这时你可以开始数数,123 …是的,我们确实用肉眼看到了9。java代码如下所示:有没有发现java判断的不是9,而是12!!!那是因为这个字符串里有2个字符ab-2?3?事实上,UTF 8号不能满足它。见下图:Java的字符串用UTF-1

    2023-05-31 12:42:01
    207 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信