gpt4 book ai didi

java - 非 ASCII 字符在 JFrame 或任何 Swing 组件中无法正确显示

转载 作者:行者123 更新时间:2023-12-01 14:36:24 26 4
gpt4 key购买 nike

假设我们希望有一个非 ASCII 字符,例如 U+2082(下标 2)。

通常,我们可以在 swing 组件(例如 JFrame)中将其显示为 Character.toString('\u2082')

现在,我的问题是我无法确定确切的 Unicode 代码,因为确切的代码是由参数中提供的字符串确定的。该参数始终是多原子 ionic - 例如PO3。我的目标是找到“3”,将其转换为下标 3 (U+2083),但也要使算法/方法足够抽象,使其适用于任何多原子 ionic (不仅是 PO3,还包括 PO4好),并让它在 JFrame 上正确显示。我在下面提供我的方法。

private static String processName(String original)
{

char[] or = original.toCharArray();

int returned = -1;

for(int i = 0; i < or.length; i++)
{

if(Character.isDigit(or[i]))
{
returned = Integer.parseInt(Character.toString(or[i]));
or[i] = (char) (returned + 2080);
returned = -1;
}

}

return new String(or);
}

您可能会想,好吧,代码看起来很干净并且应该正确显示。但是,(char) (returned+2080) 部分不显示该符号 - 它显示一个空白框。我尝试通过设置兼容字体(GNU Unifont)来修复它,但这没有任何作用。有什么想法吗?

最佳答案

2083 是一个十六进制值,而不是十进制。请参阅the unicode page有关此角色的详细信息。我认为你想要的值是0x2083,或者8323

关于java - 非 ASCII 字符在 JFrame 或任何 Swing 组件中无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16453337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com