货币符号未在控制台窗口中显示

11

我正在尝试在控制台窗口中打印带有货币符号的金额:

string cultureCode = "hi-IN";//"it-IT";
decimal amount = 123.54M;
CultureInfo cultureInfo = new CultureInfo(cultureCode);    
string strAmout=String.Format(cultureInfo, "{0:C}",amount);

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

Console.WriteLine(strAmout);

在监视窗口中金额显示正确,但在控制台窗口中未正确显示。


2
没有任何理由就踩我? - Arshad
我无法理解为什么有人会对这个好问题进行负投票或者关闭投票。 - wal
Jon Skeet 可能会帮我解决问题。 - Arshad
使用的文化是“हिंदी(印度)”或“Hindi(India)”。 仅供参考,字符串变为“₹ 123.54”,即印度卢比符号U+20B9(₹),后跟空格和数字的常规ASCII表示。 另请参见货币符号(Unicode块) - Jeppe Stig Nielsen
2个回答

3

您输出所使用的编码可能不包含这些货币符号。

尝试将控制台的输出编码设置为支持货币符号的编码:

Console.OutputEncoding = System.Text.Encoding.UTF8

2
请看:OP的问题代码已经包含了这个字符串。 - Andrey Korneyev
印度卢比是一个棘手的问题;但它应该同时存在于Ascii和Unicode中,所以这可能并不是你问题的解决方案。http://www.fileformat.info/info/unicode/char/20b9/index.htm - Timothy Groote
这些符号是否有其他可用的编码? - Arshad
是的,我刚刚发布了相关内容 :) - Timothy Groote
@TimothyGroote,意大利货币符号也出现了这种情况。 - Arshad
显示剩余3条评论

3

这是设计上的问题。

控制台窗口使用一些特殊字体(如Lucida Console、Consolas等)。
该字体可能没有您货币符号的符号,因此该符号可能会显示不正确。

更新

根据此链接,卢比符号在Lucida Console字体中不受支持。

根据此链接,它在Consolas字体中得到支持。


3
未知符号将被替换为占位符,例如问号(?)。 - Timothy Groote

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