使用UILabel显示IRR、KRW和KHR货币时,符号不正确。

3
我在将十进制转换为韩元、柬埔寨瑞尔和伊朗里亚尔的货币时遇到了问题,并将结果显示在UILabel文本中。
转换本身没有问题,我可以在调试器中看到正确的货币符号,甚至NSLog也能正确地打印出符号。
如果将这个NSString实例分配给UILabel文本,货币符号会显示为一个被划掉的框而不是正确的符号。之间没有其他代码,无论使用什么字体都无关紧要。
我尝试使用Unicode值(0x20A9)甚至使用UTF8表示(\xe2\x82\xa9)打印₩(韩元),但标签上只会显示一个划掉的框。
iPhone SDK和NSLocale中的任何其他支持的货币(近170种货币)都能正常工作,无论货币有多奇特。
还有其他人遇到同样的问题吗?有没有“解决方案”?
谢谢
编辑:
-(NSString *)decimalToCurrency:(NSDecimalNumber *)value byLocale:(NSLocale *)locale
{
    NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
    [fmt setLocale: locale];
    [fmt setNumberStyle: NSNumberFormatterCurrencyStyle];
    NSString *res = [fmt stringFromNumber: value];
    [fmt release];
    return res;
}

lbValue.text = [self decimalToCurrency: price byLocale: koreanLocale];

你在使用什么字体? - kennytm
完全没有关系。我尝试了Helvetica,Helvetica Neue,Times New Roman,Trebuched MS... - serb
@KennyTM:哈哈,这解决了韩元的问题,但伊朗里亚尔和柬埔寨瑞尔仍然有问题... - serb
请问您能告诉我如何生成这个问题吗?有人告诉我,在韩国的iPhone上,美元符号显示为一个矩形,但我无法生成它,如果没有生成它,我真的无法解决它。我尝试将语言更改为韩语,但仍然无法生成此问题。谢谢。 - aryaxt
1个回答

0
亲爱的Serb,你没有任何问题!!!你只是使用了一个有限的(非)Unicode字体。
在用户界面中,您应该向用户显示一些字符,IRR和KHR等在Unicode的不同块中,您用于向用户显示的字体应支持所有这些字符。 我强烈建议您使用Arial Unicode MS以确保您是否存在字体问题。
如果您的问题已经解决,请使用支持所有字符块的Unicode字体-或创建自己的字体。

Nasser,谢谢你的回答。不幸的是,这不是解决方案。Arial Unicode MS 仅解决了韩元的问题。IRR 和 KHR 符号仍然无法正常显示。 - serb
Serb,我相信您遇到了字体问题,如果您创建Unicode符号,请告诉我您的字符(十进制)或Unicode代码是什么?显然Arial Unicode MS支持所有字符,如果您将正确的符号传递给UI,则应该看到正确的符号。因此,您正在向UI发送一个无效的代码,并希望看到您认为正确的东西。----------您使用标准的Unicode键盘吗?那是什么,由谁标准化?可能是您的键盘生成了无效的键码。请告诉我您的键盘布局是什么? - Nasser Hadjloo

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