如何从字符串中接收数学符号,并从Java中的ASCII中获取其Dec值?
我正在做一个小项目,可以帮助我拿一根绳子,例如“7 Si PARPADRE”∈{8,9}“并识别数学符号,例如。”∈" 并在ASCII表中获取十进制值 但当我检查反字符串时,IDE只将符号解析为“?”字符 我用这个密码试过了如何从字符串中接收数学符号,并从Java中的ASCII中获取其Dec值?,java,string,encode,Java,String,Encode,我正在做一个小项目,可以帮助我拿一根绳子,例如“7 Si PARPADRE”∈{8,9}“并识别数学符号,例如。”∈" 并在ASCII表中获取十进制值 但当我检查反字符串时,IDE只将符号解析为“?”字符 我用这个密码试过了 byte[] text = scanner.nextLine().getBytes(US_ASCII); String string = new String(text, US_ASCII); 我尝试了所有可用的Standarchersets,但这不起作用 我的目标是将c
byte[] text = scanner.nextLine().getBytes(US_ASCII);
String string = new String(text, US_ASCII);
我尝试了所有可用的Standarchersets,但这不起作用
我的目标是将char变量设置为:∈“稍后获取dec值,例如8714
谢谢,并向您致意。要获取字符串中“字符”的代码点值,请给出其UTF-16代码单元位置
"∈".codePointAt(0)
它必须来自字符串,因为char(Character)是一个UTF-16代码单元,其中一个或两个表示Unicode码点。例如:
"∈
is Unicode Character 'ELEMENT OF' (U+2208) (decimal 8712)1, which means that its character code is 0x2208
, and it is certainly not an ASCII character.
1) ∈
should not be confused with ∊
Unicode Character 'SMALL ELEMENT OF' (U+220A) (decimal 8714).
To get the UTF-16 character code in Java, call charAt()
and cast/assign to int
.
String string = scanner.nextLine();
for (int i = 0; i < string.length(); i++) {
System.out.println((int) string.charAt(i));
}
“∈
是(十进制8712)1,这意味着它的字符代码是0x2208
,当然不是ASCII字符
1) ∈代码>不应与∊代码>(十进制8714)
要获取Java中的UTF-16字符代码,请调用charAt()
并将其强制转换/分配到int
String s = "∈"; // scanner.nextLine() returns a string; I'm just using String here as MRE
char[] text = s.toCharArray();
String newString = new String(text);
System.out.println(newString);
String String=scanner.nextLine();
对于(int i=0;i
上述代码将为∈代码>字符。您正在使用字节
作为数据类型–既在getBytes()
中,也在字节[]文本
中–这不支持您尝试使用的值(例如“∈").
在Java中,byte
的范围为-128到127()。另一方面,char
数据类型的功能更强:
char数据类型是单个16位Unicode字符。它的最小值为“\u0000”(或0),最大值为“\uffff”(或65535)
如果您在代码中使用char
,事情将按预期进行。首先,通过调用tocharray()
获取字符数组(而不是字节)。然后将text
定义为char[]
而不是byte[]
下面的示例将打印“∈“:
那个角色在哪里?”∈“不在ASCII字符集中。但没关系;Java不使用ASCII。扫描仪的输入可以提供什么是一个开放的问题。这是打印8712
,他是否只是错误地认为它的值是8714
?@Nexevis查看∈代码>(8712)和∊
(8714)@Andreas Ah感谢您的澄清,这让人很困惑。原始代码转换字符串数据(来自scanner.nextLine()
)到字节数组,然后返回到字符串。问题是,为什么他们在字符串的最终副本中看到意外结果。OP必须说明进行此转换的原因,但我的回答显示了如何进行类似转换,并在最后获得一个工作字符串。此代码块抛出:� : 65533.事实上,所有答案都提出了同样的问题。@BrandonRG这可能是因为扫描仪正在从控制台读取数据,而控制台没有设置UTF-8,因此控制台甚至无法获取∈代码>字符。这不是Java的问题,而是控制台窗口的问题。--或者,如果扫描仪正在读取文件,则文件的字符编码错误。