Java-从unicode转换为字符串?
我可以很容易地创建一个unicode字符,并使用以下代码行打印它Java-从unicode转换为字符串?,java,string,unicode,character,Java,String,Unicode,Character,我可以很容易地创建一个unicode字符,并使用以下代码行打印它 String uniChar = Character.toString((char)0000); System.out.println(uniChar); 但是,现在我想检索上面的数字,添加3,并打印出数字0003对应的新unicode字符。有没有办法检索unichar的实际字符串?如“\u0000”所示?这样我就可以将“0000”作为子字符串,将其转换为整数,再加上3,然后颠倒整个过程。我想您正在寻找: 返回指定索引处的字符(
String uniChar = Character.toString((char)0000);
System.out.println(uniChar);
但是,现在我想检索上面的数字,添加3,并打印出数字0003对应的新unicode字符。有没有办法检索unichar的实际字符串?如“\u0000”所示?这样我就可以将“0000”作为子字符串,将其转换为整数,再加上3,然后颠倒整个过程。我想您正在寻找: 返回指定索引处的字符(Unicode代码点)。索引引用字符值(Unicode代码单位),范围从0到length()-1 如果在给定索引处指定的字符值在高代理项范围内,以下索引小于此字符串的长度,并且以下索引处的字符值在低代理项范围内,则返回与此代理项对对应的补充代码点。否则,将返回给定索引处的char值 例如():
//包含笑脸笑眼表情符号的字符串
String str=“我想您正在寻找:
返回指定索引处的字符(Unicode代码点)。该索引引用字符值(Unicode代码单位),范围从0到length()-1
如果在给定索引处指定的字符值在高代理项范围内,以下索引小于此字符串的长度,并且以下索引处的字符值在低代理项范围内,则返回与此代理项对对应的补充代码点。否则,将重新计算给定索引处的字符值转身
例如():
//包含笑脸笑眼表情符号的字符串
String str=“Unicode是一种“字符”编号“-代码点”-最高可达3字节整数范围
UTF-16编码使用一系列字节对,javachar就是这样的字节对。字符的(int)
转换是不完美的,只覆盖了Unicode的一部分。将代码点转换为多个字符的正确方法:
int[] codePoints = {0x2639, 0x263a, 0x263b};
String s = new String(codePoints, 0, codePoints.length);
codePoints[0} += 2;
要使用Unicode代码点,可以执行以下操作:
s.codePoints().forEach(cp -> {
System.out.printf("U+%X = %s%n", cp, Character.getName(cp));
};
代码使用1个代码点的整数数组
在java 8中,可以获得代码点的IntStream:
// array will contain one or two characters
char[] chars = Character.toChars(codePoint);
// string.length will be 1 or 2
String str = new String(chars);
Unicode是一种“字符”(字符)的编号,其代码点最多为3字节的整数范围
UTF-16编码使用一系列字节对,javachar就是这样的字节对。字符的(int)
转换是不完美的,只覆盖了Unicode的一部分。将代码点转换为多个字符的正确方法:
int[] codePoints = {0x2639, 0x263a, 0x263b};
String s = new String(codePoints, 0, codePoints.length);
codePoints[0} += 2;
要使用Unicode代码点,可以执行以下操作:
s.codePoints().forEach(cp -> {
System.out.printf("U+%X = %s%n", cp, Character.getName(cp));
};
代码使用1个代码点的整数数组
在java 8中,可以获得代码点的IntStream:
// array will contain one or two characters
char[] chars = Character.toChars(codePoint);
// string.length will be 1 or 2
String str = new String(chars);
对于Unicode BMP和Unicode补充窗格(使用UTF-8中的4个字节对字符进行编码)中的代码点,此代码在这两种情况下都有效。4字节代码点需要存储2个Java字符实体,因此在本例中string.length()=2
对于Unicode BMP和Unicode补充窗格(使用UTF-8中的4个字节对字符进行编码)中的代码点,此代码在这两种情况下都有效。4字节代码点需要存储2个Java字符实体,因此在本例中string.length()=2
太好了,这正是我想要的。谢谢大家!@user07-不,答案(String.codePointAt
)适用于需要两个代码单元的代码点(学究般地说,在Java中,字符串中没有“1字节”代码点——Java字符串使用UTF-16[本质上])。答案中的示例使用了一个代码单位代码点,但这只是一个示例。我添加了一个带有两个代码单元代码点的示例。@user07-Ah!我明白你的意思。我已经更新显示了在访问代码点后从代码点数组创建字符串。谢谢太好了,这正是我想要的。谢谢大家!@user07-不,答案(String.codePointAt
)适用于需要两个代码单元的代码点(学究般地说,在Java中,字符串中没有“1字节”代码点——Java字符串使用UTF-16[本质上])。答案中的示例使用了一个代码单位代码点,但这只是一个示例。我添加了一个带有两个代码单元代码点的示例。@user07-Ah!我明白你的意思。我已经更新显示了在访问代码点后从代码点数组创建字符串。谢谢这并没有显示问题的基本方面:如何访问字符串中字符的代码点。它回答了问题的标题。我来到这一页只是因为标题,我没有找到对我有帮助的答案。给你。标题!=问题。我恭敬地建议要么回答实际问题,要么删除答案。不回答问题的答案是没有用的,因此它们会随着时间的推移累积向下投票。这并没有显示问题的基本方面:如何访问字符串中字符的代码点。它回答了问题的标题。我来到这一页只是因为标题,我没有找到对我有帮助的答案。给你。标题!=问题。我恭敬地建议要么回答实际问题,要么删除答案。不回答问题的答案是没有用的,因此随着时间的推移,它们会积累下票数。