当前文化 - 显示欧元符号 (€) 而不是 EUR 字符串

Posted

技术标签:

【中文标题】当前文化 - 显示欧元符号 (€) 而不是 EUR 字符串【英文标题】:Current culture - display euro symbol (€) instead of EUR string 【发布时间】:2017-09-11 12:20:04 【问题描述】:

当前文化设置为“sk-SK”(斯洛伐克货币 - 欧元)我想在 Razor 中使用 Price.ToString("c") 将价格显示为货币时显示欧元符号 (€) 而不是“EUR”字符串。

当我将当前文化更改为例如德语(“de-DE”)时,会显示欧元符号 (€)。

我想在显示带有斯洛伐克文化的价格时也显示欧元符号(不是“EUR”字符串)。

我认为这取决于操作系统(我们的操作系统是 Windows Server 2012),但更改本文建议的默认货币:https://www.howtogeek.com/240216/how-to-change-windows-default-currency-from-dollars-to-euros/(在我们的例子中从欧元更改为欧元)不会改变货币符号的显示方式。如何将货币显示为 € 而不是 EUR?

【问题讨论】:

sk-SK 语言环境中change currency symbol 有什么问题?它有二传手。 写入剃须刀代码有什么问题? (例如:@html.Label("Something")€ 【参考方案1】:
CultureInfo ci = new CultureInfo("sk-SK");
ci.NumberFormat.CurrencySymbol = "€";
CultureInfo.DefaultThreadCurrentCulture = ci;
double Price = 10.0;
Console.WriteLine(Price.ToString("c"));

这会产生输出

10,00 欧元

另一种可能性是将文化信息作为IFormatProviderToString() 中传递:

Console.WriteLine(Price.ToString("c",ci));

【讨论】:

这为我提供了£10.00。你在哪里使用ci 我想避免在代码中明确设置货币符号。这是一个更大的项目,我不想进行这样的更改,这将使它容易在未来出现错误(例如,如果货币改变了)。我从 Windows Server 2008 迁移了这个网站,其中 Price.ToString("c")sk-SK 区域设置显示带有欧元符号的价格。如果我没有找到其他解决方案,我会将您的回复标记为答案。谢谢 @SeM:你说得对,我忘记了代码中的一行。永远不要真正将ci 设置为CultureInfo @waka 或者你可以在 ToString() 方法中添加它 - ... Console.WriteLine(Price.ToString("c", ci)); 但无论如何,它为我返回10,00 ?

以上是关于当前文化 - 显示欧元符号 (€) 而不是 EUR 字符串的主要内容,如果未能解决你的问题,请参考以下文章

货币缩写 (EUR, USD, GBP) 转换为货币符号 (€, $, £)

如何从iphone中的货币代码中获取货币符号?

格式化货币显示货币名称而不是符号

如何获取当前文化格式的数字货币

1欧元=1.2250/1.2350美元是啥意思

如何从 iPhone 中的货币代码中获取货币符号?