Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-从unicode转换为字符串?_Java_String_Unicode_Character - Fatal编程技术网

Java-从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,然后颠倒整个过程。我想您正在寻找: 返回指定索引处的字符(

我可以很容易地创建一个unicode字符,并使用以下代码行打印它

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!我明白你的意思。我已经更新显示了在访问代码点后从代码点数组创建字符串。谢谢这并没有显示问题的基本方面:如何访问字符串中字符的代码点。它回答了问题的标题。我来到这一页只是因为标题,我没有找到对我有帮助的答案。给你。标题!=问题。我恭敬地建议要么回答实际问题,要么删除答案。不回答问题的答案是没有用的,因此它们会随着时间的推移累积向下投票。这并没有显示问题的基本方面:如何访问字符串中字符的代码点。它回答了问题的标题。我来到这一页只是因为标题,我没有找到对我有帮助的答案。给你。标题!=问题。我恭敬地建议要么回答实际问题,要么删除答案。不回答问题的答案是没有用的,因此随着时间的推移,它们会积累下票数。