一个面试题:
static void Main(string[] args)
{
string s = "abcdefg某某某;
int j = System.Text.Encoding.Default.GetBytes(s).Length;
Console.WriteLine(j);
}
在VS下编译的结果是13:
在在线编译器上编译的是10:
在MSDN上查到Default的描述:
Gets an encoding for the operating system's current ANSI code page.
它们是相同的操作系统和字符集下编译的,为什么会产生差异呢?是Mono和.Net的区别吗?或者说同样的规格在不同平台在实现上的不同呢?
------解决思路----------------------
你把Encoding.Default打印出来看看呢,确认他们是一样的?
------解决思路----------------------
一个中文是单字节,一个中文是双字节。
你要用UTF8或GB2312来看就会统一了。Default是根据平台来决定的
------解决思路----------------------
Default当然在不同系统上不一样了。你敢不敢都用一个明确的编码方式,而不是Default?
------解决思路----------------------
Encoding.Default 是指当前系统的默认代码页。中文系统是GBK,在线编译环境很可能就是Unicode/ASCII,如果是日本的说不定还是JIS。自然结果是不一样的。这也是在编程中,一定要避免使用Encoding.Default的原因