确切的说应该是Dreamweaver与VS2003的UTF-8兼容问题
问题描述
我习惯用DW的代码视图来编写HTML,而C#自然还是要在VS里写更舒服些.
DW我设置为xhtml1.0utf-8,VS2003也同样保存为utf-8,可打开DW的文件或者复制DW的代码进来就是乱码,百思不得其解,都是UTF-8的呀,为什么还会乱码,而且更奇怪的是用IE浏览这乱码网页也都能分辨出是utf-8的编码.
问题只能集中在utf-8编码本身了,这才注意到utf-8的一些选项,查询了下签名BOM的信息
在布卢斯狼的blog上http://www.cnbruce.com/blog/showlog.asp?log_id=1000&cat_id=27引用内容
如果选择Unicode(UTF-8)作为默认编码,则可以选择“包括Unicode签名(BOM)”选项以在文档中包括字节顺序标记(BOM)。
BOM是位于文本文件开头的2到4个字节,可将文件标识为Unicode,还标识后面字节的字节顺序。由于UTF-8没有字节顺序,因此可以选择添加UTF-8BOM。对于UTF-16和UTF-32,这是必需的。
ok,在DW和VS上都选择带签名,保存就OK了
还找到了如下信息,虽然现在没发现问题,但还是设置一下,就是选择C标准的UTF-8.
引用内容
如果选择Unicode(UTF-8)作为默认编码,请选择一个Unicode标准化表单。
有四种Unicode标准化表单。最重要的是标准化表单C,因为它是用于万维网的字符模型的最常用表单。Macromedia提供其他三种Unicode标准化表单作为补充。
在Unicode中,有些字符看上去很相似,但可用不同的方法存储在文档中。例如,“”(e变音符)可表示为单个字符“e变音符”,或两个字符“正常拉丁语e”+“组合变音符”。Unicode组合字符是与前一个字符结合使用的字符,因此变音符会显示在“拉丁语e”的上方。这两种形式都显示为相同的印刷样式,但保存在文件中的每种形式是不同的。
标准化是指确保可用不同形式保存的所有字符都使用相同的形式进行保存的过程。即,文档中所有“”字符都保存为单个“e变音符”或“e”+“组合变音符”,而不是在一个文档中保存为这两种形式。
有关Unicode标准化和可以使用的特定表单的更多信息,请参见UnicodeWeb站点,网址是http://www.unicode.org/reports/tr15。