(Char)174返回(Char)0174的值,为什么?

时间:2014-01-22 16:58:56

标签: c# .net char ascii

我正在使用字符串分隔符,其中一个是«或174。但是,当我单步执行代码时,它在调试器中看起来像是0174。有关代码,请参阅here

这是我在代码中进行参考的方式:

string fvDelimiter = ((char)174).ToString();

3 个答案:

答案 0 :(得分:6)

关于字符编码。 174(十六进制为AE)在Unicode中为®,默认情况下在string内部使用。但是Extended ASCII code中的«

请参阅您提供的文章中的差异:

  

插入ASCII字符

     

要插入ASCII字符,请在键入字符代码时按住ALT。例如,要插入度数(º)符号,请在数字小键盘上键入0176时按住ALT。

     

插入Unicode字符

     

要插入Unicode字符,请键入字符代码,按ALT,然后按X.例如,要键入美元符号($),请键入0024,按ALT,然后按X.

答案 1 :(得分:1)

据我所知,它基于使用的字体。在Windows上,我使用“字符映射”来检查它们。例如,字体Calibri中的“«”字符是171。

答案 2 :(得分:1)

原因很简单,c#中的char代表完全匹配的unicode字符代码0174而不代表ASCII代码是

这里有一个代码,可以让你更了解我的意思

            var chrs = System.Text.Encoding.ASCII.GetChars( new byte[]{0174});
            var chrsUtf = System.Text.Encoding.UTF8.GetChars(new byte[] { 0174 });
            var chrsUnicode = System.Text.Encoding.Unicode.GetChars(new byte[] { 0174 }); 
            Debug.WriteLine(chrs[0].ToString());
            Debug.WriteLine(chrsUtf[0].ToString());
            Debug.WriteLine(chrsUnicode[0].ToString());