Netbeans图形用户界面编辑器不支持ASCII字符 - Java

5

我正在使用NetBeans IDE(Java)制作一个基本的GUI,并想创建一个带有√符号的按钮。它不允许我复制粘贴,所以我尝试使用其ASCII代码-char sqrt = (char) 251。然而,它给了我"û"而不是平方根符号,我不知道为什么。请问有人可以解释一下为什么会出现这种情况,并提供一个解决方案吗?

2个回答

4

Java字符采用Unicode编码,而不是ASCII。Unicode代码点251(U+00FB)为“带抑扬符号的拉丁小写字母u”。为了使用仅包含基本ASCII符号的字符集输入各种Unicode字符,Java提供了使用文字格式输入Unicode字符的方法。因此,您可以这样做:

char sqrt = '\u221a';

U+221A代表平方根符号的Unicode编码点。

这种\uXXXX格式也可以用于字符串字面量:

String s = "The square root of 2 (\u221a2) is approximately 1.4142";

如果您打印该字符串,您将看到
The square root of 2 (√2) is 1.4142

但是为什么这个代码可以正常工作(当我只有它自己的时候):char sqrt = (char) 251; System.out.println(sqrt);?至少在我从命令行编译它时它可以正常工作 :o - Bluefire
我的猜测是你正在使用Windows默认文件编码CP437,它将平方根符号映射到0xFB(251),因此当值为251的int被转换为char时,它会看到CP437代码页中代码点为0xFB的字符是平方根符号,并使用它。 - joev

3

Java使用Unicode编码,'√'的Unicode值是8730。因此,应该这样做:

char sqrt = 8730;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接