You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中使用货币格式符输出欧元时显示异常求助

解决控制台输出欧元符号显示为问号的问题

针对你遇到的情况,欧元符号显示为问号通常是因为控制台的区域性设置未正确应用,或者输出编码不支持Unicode字符。这里有几个可行的解决方法:

1. 显式指定比利时区域性

控制台应用可能不会自动继承系统的区域性,或者当前线程的区域性不是你需要的。你可以在代码中直接指定比利时的区域性(法语或荷兰语),强制使用欧元格式:

// 选择比利时法语或荷兰语区域性
var belgianCulture = new System.Globalization.CultureInfo("fr-BE");
// var belgianCulture = new System.Globalization.CultureInfo("nl-BE");

// 设置当前线程的区域性
System.Threading.Thread.CurrentThread.CurrentCulture = belgianCulture;
System.Threading.Thread.CurrentThread.CurrentUICulture = belgianCulture;

// 执行输出
Console.WriteLine($"{account1.Name}'s balance: {account1.Balance:C}");

这样格式化时会直接使用比利时的货币规则,输出正确的欧元符号。

2. 格式化时单独指定区域性

如果不想修改整个线程的设置,也可以在格式化字符串时单独传入区域性:

var belgianCulture = new System.Globalization.CultureInfo("fr-BE");
Console.WriteLine(string.Format(belgianCulture, "{0}'s balance: {1:C}", account1.Name, account1.Balance));

3. 调整控制台输出编码

欧元符号显示为问号,也可能是控制台的输出编码不支持该字符。你可以在代码开头设置编码为UTF-8:

Console.OutputEncoding = System.Text.Encoding.UTF8;

或者使用西欧常用的Windows-1252编码:

Console.OutputEncoding = System.Text.Encoding.GetEncoding(1252);

4. 确认系统区域设置生效

有时候修改区域设置后需要重启应用或电脑才能生效:

  • 打开系统的区域设置,选择“比利时(法语)”或“比利时(荷兰语)”作为格式
  • 进入“附加设置”,确认货币符号为€
  • 重启你的Visual Studio或控制台应用,确保新设置被加载

内容的提问来源于stack exchange,提问作者Nomana Forgonzzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:04:06