UILabel + IRR,KRW和KHR货币的符号错误

时间:2010-02-01 10:26:13

标签: iphone unicode nsstring uilabel currency

将韩元,柬埔寨瑞尔和伊朗里亚尔的十进制转换为货币并将结果显示在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];

1 个答案:

答案 0 :(得分:0)

亲爱的塞尔维亚,你没有任何问题!你只需使用有限(非)Unicode字体。

在UI中,你应该向用户显示一些字符,而IRR和KHR等在unicode和不同的unicode块中,Fontyou用来显示给用户应该支持所有这些。 我强烈建议您使用 Arial Unicode MS 以确保您有字体问题。

如果你的问题用字体解决了。您必须使用支持所有字符块的Unicode字体 - 或创建您自己的字体