【问题标题】:Non ASCII characters not being shown up未显示非 ASCII 字符
【发布时间】:2010-06-24 11:02:13
【问题描述】:

我有一个奇怪的问题。

我正在开发一个 java web start 应用程序(使用 swing),它在(canvas)JPanel 上绘制特定图像。它上面的一些占位符有一些非 ASCII 字符作为它们的文本。

现在,当在画布上绘制该图像时,画布显示“[]”,就好像它无法识别这些 UTF-8 编码字符的本机表示。但是,当我单击这些占位符时,它们的属性侦听器会显示一个对话框,允许用户在其中编辑它们所持有的文本。现在,奇怪的是,这些对话框以其真实和正确的表示形式显示了非 ASCII 文本(意味着我可以编辑此文本)。

现在这违背了我的概念,即操作系统可能没有这些字符的本机表示。虽然,东亚语言支持已经安装在我的 Windows 7 系统上。

更奇怪的是,当我在 RHEL5 桌面上的浏览器中运行同一个应用程序时,它会在画布和对话框中显示正确的表示形式,这违背了背后代码存在问题的概念这个应用程序。

现在我很困惑这可能是什么原因造成的。
有人可以帮帮我吗!

谢谢,
kshtjsnghl

【问题讨论】:

    标签: java swing unicode


    【解决方案1】:

    很可能只是所使用的字体不支持这些字符。尝试将其更改为您知道能够支持所需字符的字体。

    【讨论】:

    • 但问题是当您在不同的对话框中打开它们时,相同的字符会被正确表示。哪种暗示字体支持这些字符。
    • @kshtjsnghl:不,恰恰相反。字符在不同的对话框中正确显示的事实表明 data 是正确的,这是一个 display 问题......这会导致字体原因。尝试将不起作用的控件的字体设置为与 起作用 起作用的控件的字体相同。
    • 进一步的问题是它们都在 linux 系统上正确地表示了文本。
    • @kshtjsnghl:这更暗示这是一个渲染问题……再次,寻找可以满足您需求的字体。
    • 进一步研究这个问题,我发现在我们的应用程序中,我们实际上是根据它正在运行的操作系统(内部识别)设置 UIManager 的外观和感觉,即使用系统字体.并且 linux 机器上使用的字体与 windows 客户端上使用的字体不同,并且该字体没有在 windows 客户端上显示。谁能帮我知道在 Windows 上可以使用哪种字体可以成功渲染完整的画布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2012-10-26
    • 2013-08-19
    • 2015-03-03
    • 1970-01-01
    相关资源
    最近更新 更多