VS2022中NumberFormatInfo.CurrencySymbol显示?而非€的问题求助
控制台货币符号显示为?的问题解决
问题原因
核心原因是控制台窗口默认编码不支持欧元(€)这类Unicode字符,导致字符无法正确渲染,被替换为问号。虽然系统区域设置为西班牙语,但控制台默认代码页(如437、850)不包含欧元符号,所以显示异常;而en-US的$符号在默认代码页中存在,因此能正常显示。
解决方法
1. 代码中强制设置控制台输出编码
在所有输出语句前添加编码配置,让控制台使用UTF-8编码输出:
using System.Globalization; using System.Text; // 设置控制台输出编码为UTF-8 Console.OutputEncoding = Encoding.UTF8; // 原测试代码 Console.WriteLine("Currency Symbol: {0}", NumberFormatInfo.CurrentInfo.CurrencySymbol); decimal value = 1603.42m; Console.WriteLine(value.ToString("C3", new CultureInfo("en-US"))); Console.WriteLine(value.ToString("C3", new CultureInfo("fr-FR")));
2. 修改Windows系统全局区域设置
如果不想每次在代码中配置编码,可以修改系统默认设置:
- 打开「控制面板」→「区域」→「管理」标签页
- 点击「更改系统区域设置」,勾选「Beta版:使用Unicode UTF-8提供全球语言支持」(Windows 10及以上版本)
- 重启电脑后,控制台会默认使用UTF-8编码,支持更多Unicode字符
3. 调整Visual Studio调试控制台设置
直接在VS中配置调试时的控制台编码:
- 点击「工具」→「选项」→「调试」→「控制台」
- 将「控制台输出编码」设置为「UTF-8」,保存后重新调试
内容的提问来源于stack exchange,提问作者visent
相关产品推荐
相关产品推荐

