日期:2014-05-19  浏览次数:21367 次

C#和XML的编码问题,都怕了!!!
使用VS2005中System.Text.Encoding.Default得到的为什么是GB2312?不是说C#编码使用UNICODE吗?假设XML头中显示编码为GB2312 <?xml   version= "1.0 "   encoding= "gb2312 "?> 使用XMLDOCMENT加载后输出XmlDocment.outxml()方法输出为String字符串后,此时编码是什么编码? <?xml   version= "1.0 "?> 如果没有显示编码那么加载后输出为字符串的编码是什么?如果C#字符串中没有中文是不是无论选择何种编码都不会出现乱码?
感谢!感谢!感谢!!!!!!!!

------解决方案--------------------
up
------解决方案--------------------
System.Text.Encoding.Default得到的是intl.cpl 高级页上的设置 自己检查一下再说
------解决方案--------------------
Encoding.Default 属性. 取得系统目前ANSI 字码页的编码方式
------解决方案--------------------
顶你
------解决方案--------------------
来自 MSND 的解释

属性值
系统的当前 ANSI 代码页的编码。
备注

若要获取与系统区域设置中的默认 ANSI 代码页相关联的编码,请使用 GetEncoding(0) 或 Default 属性。若要确定系统中使用的默认代码页,请使用 Windows API GetSystemDefaultLangID。若要确定当前的 ANSI 代码页,请使用 Windows API GetACP。

警告:
不同的系统可能使用不同的编码作为默认编码,因此,从一个系统流入另一个系统的数据可能不会被正确转换。若要确保编码后的字节能够正确解码,请使用带前导码的 Unicode 编码(即 UTF8Encoding、UnicodeEncoding 或 UTF32Encoding)另一选择是使用较高级别的协议以确保使用同一格式进行编码和解码。


详细参考
Encoding.Default 属性
http://msdn2.microsoft.com/zh-cn/library/System.Text.Encoding.Default(VS.80).aspx
------解决方案--------------------
使用VS2005中System.Text.Encoding.Default得到的为什么是GB2312?
-------------------------
楼上都解释得很清楚了...是系统当前区域设置对应的 ANSI 字码页的编码方式,不一定是GB2312...


不是说C#编码使用UNICODE吗?
--------------
是UTF-8...UTF-8是UNICODE的一种变长编码方式...


假设 XML头中显示编码为GB2312 <?xml version= "1.0 " encoding= "gb2312 "?> 使用XMLDOCMENT加载后输出XmlDocment.outxml()方法输出为String字符串后,此时编码是什么编码? <?xml version= "1.0 "?> 如果没有显示编码那么加载后输出为字符串的编码是什么?
--------------
XmlDocment指定哪种编码就是哪种...如果没有指定就是UTF-8...


如果C#字符串中没有中文是不是无论选择何种编码都不会出现乱码?
-------------
当然不是...不只是中文才用Unicode的...只有纯ASCII才能保证所有编码都不会有乱码...
UTF-8理论上可以安全表示所有字符...不过如果你的本地系统没有安装相应的字体支持你看上去还是乱码...