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

3

当前的文化设置为"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到€)并不能改变货币符号的显示方式。如何将货币显示为€而不是EUR?


sk-SK区域设置中,更改货币符号有什么问题呢?它有setter方法。 - Sinatr
在razor代码中写入有什么问题吗?(例如:@Html.Label("Something")€ - SᴇM
1个回答

3
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英镑。你在哪里使用了ci - SᴇM
我希望避免在代码中明确设置货币符号。这是一个较大的项目,我不想做出这样的更改,因为这会使其容易出现未来的错误(例如如果货币发生变化)。我将这个网站从Windows Server 2008迁移到了sk-SK区域设置下显示欧元符号的服务器上。如果我找不到其他解决方案,我会将您的回复标记为答案。谢谢 - UrAn
@SeM:你说得对,我在代码中忘记了一行。实际上从来都没有将 ci 设置为 CultureInfo - waka
1
@waka 或者你可以直接在 ToString() 方法中添加它 - ... Console.WriteLine(Price.ToString("c", ci)); - SᴇM
但无论如何,对我来说它返回的是10,00 ? - SᴇM
@SeM: 我更喜欢这个。? 取决于你显示输出的控制台。例如,VisualStudio 的内置控制台应该能正确显示 。Windows 命令提示符对我来说也显示为 ?(将符号更改为 $,它应该能在命令提示符窗口中正确显示)。 - waka

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