修改一位前辈留下的一个asp.net程序时发现一个奇怪的问题,我只要一修改,程序马上报错,就算在无关紧要的地方加了一个空格也是,就算再删掉也不行,后来比较我修改前后的文件发现在文件的最开头有两个字符是不一样的,我就纳了闷了。后来终于从网上找到问题根源
见http://www.aspnetresources.com/blog/unicode_in_vsnet.aspx
后来看同事的电脑,Visual Studio .net默认的文件编码是根据你系统的配置不同(应该是地域选择不同)而不同,要选择编码必须在Advanced Save Options中选择而且必须每次都选系统不会记住你上次的选择。如果是asp.net程序你可以在web.config中如下配置:
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="utf-8"
/>
不过这只能保证所有的页面文件保存为utf-8而其余的文件还是要手动修改。
附:
为 Web 窗体全球化编辑 Web.config 文件
Web 窗体配置文件名为 Web.config,它为与该配置文件位于同一目录中的每个 Web 窗体页提供设置。这些设置通常还由子目录来继承。每个文件都可包含一个 globalization 节,在该节中可指定默认编码和区域性。如果相关 Encoding 和 CultureInfo 类接受这些值,则这些值是有效的。有关 Globalization 节的内容的更多信息,请参见 <globalization> 元素。有关 Web.config 文件的常规信息,请参见 ASP.NET 配置。
Web.config 文件是区分大小写的;因此,指定为“FileEncoding”的值将不会得到所需的结果,但指定为“fileEncoding”的值却可以得到所需结果。有关更多信息,请参见 ASP.NET 配置文件的格式。
编辑 Web.config 文件
设置 fileEncoding、requestEncoding 和 responseEncoding 的值,以指定以何种方式编码 .aspx 文件、请求数据和响应数据。有关编码值的更多信息,请参见为 Web 窗体全球化选择编码
如果在 Web.config 文件中指定了文件编码,则实际文件必须以相同的编码保存。若要选择不同于系统默认编码的编码,请使用高级保存选项对话框(可从“文件”菜单打开)。
设置 culture 和 uiCulture 的值。有关区域性值的更多信息,请参见为 Web 窗体全球化设置区域性和 UI 区域性。
复制代码
<configuration>
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
resp
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
</configuration>
注意 Web.config 文件中 globalization 节的属性还可在 @ Page 指令中指定(但 fileEncoding 除外,它仅可在 Web.config 中指定,因为它应用于文件本身)。Page 指令中的设置仅对特定页有效,并重写 Web.config 文件的设置。