当前文化 - 显示欧元符号 (€) 而不是 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 欧元
另一种可能性是将文化信息作为IFormatProvider
在ToString()
中传递:
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 字符串的主要内容,如果未能解决你的问题,请参考以下文章