在 Java GUI 中使用 Unicode 字符安全吗?

发布于 2024-12-04 10:37:00 字数 384 浏览 0 评论 0原文

对于 Java GUI 中的播放按钮,我目前使用的按钮的标签设置为“▻”(在 Unicode 符号表中找到了该符号)。据我了解,最好不要直接在源代码中使用此类符号,而是使用显式的 unicode 表示形式,例如本例中的 \u25BB ,因为某些工具(编辑器等)可能不能够处理包含非 ASCII 内容的文件(正确吗?)。

假设编译的类包含正确的字符,在什么情况下 GUI不会在当前 PC 操作系统上显示预期的符号? Linux、Windows、Mac 应该都支持 UTF-16,对吗?可用的字体或字体设置是否会导致此方法出现问题?

(当然我可以添加一个图标,但如果符号应该已经可用,为什么要添加额外的资源......鉴于这是一个便携式解决方案)

For a play button in a Java GUI I currently use a button with the label set to ' ▻ ' (found this symbol in a Unicode symbol table). As I understand, it is better to not use such symbols directly in source code but rather use the explicit unicode representation like \u25BB in this example, because some tools (editor, ...) might not be able to handle files with non-ASCII content (is that correct?).

Assuming the compiled class contains the correct character, under which circumstances would the GUI not show the intended symbol on a current PC operating system? Linux, Windows, Mac should all support UTF-16, right? Do available fonts or font settings cause problems to this approach?

(Of course I could add an icon, but why add extra resources if a symbol should already be available... given that this is a portable solution)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不疑不惑不回忆 2024-12-11 10:37:00

可用的字体或字体设置是否会导致此方法出现问题?

不幸的是他们确实如此。当然,您可以在源代码中使用unicode,但问题是目前unicode分配了246,943个代码点 所以显然没有字体具有定义的字体的一小部分。当字形不可用时,您会得到正方形或其他一些奇怪的渲染。我遇到过这样的情况:相对简单的符号(例如 ³)在一台 Windows 计算机上呈现良好,但在另一台几乎相同的计算机上显示为正方形。所有类型的语言和区域设置以及次要版本更改都会影响这一点,因此它非常脆弱。

据我所知,保证始终可用的角色(如果有的话)很少。 Java 的 Font 类有一些方法,例如 < code>canDisplay 和 canDisplayUpTo,这对于在运行时检查这一点很有用。

您可以捆绑一些具有所需特殊字符的良好 TrueType 字体,而不是使用图标,然后在应用程序中的任何位置使用该字体。

Do available fonts or font settings cause problems to this approach?

Unfortunately they do. You can use unicode in the source code of course, but the problem is that currently unicode has 246,943 code points assigned so obviously no font has even a fraction of those defined. You'll get squares or some other weird rendering when the glyph isn't available. I've had cases where relatively simple symbols such as ³ render fine on one Windows computer and show up as squares in the next, almost identical computer. All sort of language and locale settings and minor version changes affect this, so it's quite fragile.

AFAIK there are few, if any, characters guaranteed to be always available. Java's Font class has some methods such as canDisplay and canDisplayUpTo, which can be useful to check this at runtime.

Instead of using icons, you could bundle some good TrueType font that has the special characters you need, and then use that font everywhere in your app.

∞琼窗梦回ˉ 2024-12-11 10:37:00
I currently use a button with the label set to ' ▻ ' 

而不是我总是使用 JButton(字符串文本,图标图标), 和 图标 是否存在这个 字体 或其他字体,UTF-16或统一码

I currently use a button with the label set to ' ▻ ' 

rather than I always use JButton(String text, Icon icon), and Icon doesn't matter if is there this Font or another Font, UTF-16 or Unicode

↙厌世 2024-12-11 10:37:00

大多数编辑器都支持 unicode,所以继续吧。

看这篇文章: Eclipse French support

如果您使用的是记事本等简单编辑器,那么什么时候您保存类型名称并在其下方选择 UTF 编码(http://www.sevenforums.com/ software/72727-how-make-notepad-save-txt-files-unicode.html )

Most of editors have support for unicode, so go on.

Look at this post: Eclipse French support

If you are using simple editor like notepad then when you save type name and below it choose UTF encoding ( http://www.sevenforums.com/software/72727-how-make-notepad-save-txt-files-unicode.html )

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文