2011-11-23 251 views
2

每当我尝试使用转换为十六进制?

string.Format("{0:X}", (int)"™"); 

它返回2122,因为当我使用的在线转换器,我得到99.为什么这是奇怪的转换“™”为十六进制字符串?

+0

你比较什么编码的在线转换? –

+0

不确定,但我认为它是Unicode,因为™是Unicode字符? – method

+1

我在unicode转换器中显示的Unicode为0x2122我去... –

回答

10

99是Windows-1252编码中的TM的代码,而2122是根据Unicode标准的代码。

+0

是否有可能将其转换为Windows-1252? – method

+0

http://msdn.microsoft.com/en-us/library/system.text.encoding.convert%28v=VS.100%29.aspx – Cito

4

正如Cito所解释的,99是Windows-1252编码中的TM代码。你可以得到它如下:

var result = Encoding.GetEncoding("Windows-1252") 
        .GetBytes("™") 
        .Single() 
        .ToString("X"); 

// result == "99"