Visual Studio C#禁用unicode或utf-8作为文件编码并改为使用ASCII

时间:2009-09-21 21:17:41

标签: visual-studio encoding latex utf-8

我目前正在处理一些嵌入Visual Studio 2008生成的C#文件的LaTeX文档。我的问题是这些文件是用带有BOM的UTF-8编码的。这导致LaTeX产生的输出类似于这篇文章中描述的输出:
Invalid characters in generated latex sources in Doxygen?

我知道我可以使用像Notepad ++这样的工具将文件转换为ASCII或其他没有BOM的格式。但我的意图是:

  • 要么导致LaTeX使用正确的输入编码(直到现在我都无法使用包导入,例如:

    \ usepackage {ucs}%unicode功能
    \ usepackage [LATIN1] {inputenc}

  • 或导致Visual Studio保存没有BOM或纯ASCII格式的文件

否则我可能会编辑该文件(编译并将其保存在VC#中)并无意中再次引入BOM,这会破坏文档中的代码列表。

非常感谢,
Ovanes

5 个答案:

答案 0 :(得分:2)

我不确定我理解你的情景。但是,如果您只是想从Visual Studio中将文件转换为ASCII,请选择“文件 - 另存为”并将编码切换为ASCII。

答案 1 :(得分:2)

Visual Studio没有这个选项,我相信,因为.NET是从头开始构建的,用于使用Unicode。

但是,我不相信Visual Studio应该使用字节顺序标记。您说Visual Studio正在“生成”这些文件,但是实际创建它们的过程是什么?它是某种代码生成工具的结果吗?如果是这样,那就是罪魁祸首和你应该关注的地方。

我检查了几个代码文件,但没有一个包含字节顺序标记。

编辑:更改Visual Studio项目模板

在评论中,提问者说这些文件是由内置的Console Application项目模板生成的。它们存储在您的硬盘驱动器上,必要时可以进行修改。

您的安装路径可能会有所不同,但在我的系统上,我导航到此目录:

C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ProjectTemplates \ CSharp \ Windows \ 1033

在这里,我找到了ConsoleApplication.zip。我将其复制到我的桌面(为安全起见)并解压缩,在里面找到4个文件 - .vstemplate文件,以及项目创建的3个文件:AssemblyInfo.cs,ConsoleApplication.csproj和Program.cs。 / p>

如果需要,您可以编辑这些文件以删除字节顺序标记,将其压缩回来,并替换源目录中的文件。

或者,为了更安全,您可以将模板的名称更改为“控制台项目 - 无BOM”或类似的内容。在.vstemplate文件中,有一个Name属性,它使用Package属性通过guid从某个地方调用信息。您可以使用指定名称的简单行替换此名称行。

<Name>Console Application - No BOM</Name>

然后重新压缩文件,并将zip文件放在以下路径中:

(我的文档)\ Visual Studio 2008 \ Templates \ ProjectTemplates \ Visual C#

从此模板创建的新项目不应包含字节顺序标记,但请记住,Microsoft显然希望在那里使用这些字节顺序标记,因此您的里程可能会有所不同。

项目模板(比如Class)可以用同样的方式修改 - 不需要太多探索就可以找到默认的和用户的ItemTemplates目录。

答案 2 :(得分:0)

你试过\ usepackage [UTF8] {inputenc}

答案 3 :(得分:0)

在VS 2015中,您可以使用File -> Advanced save options...对话框指定编码

答案 4 :(得分:0)

您可以使用Visual Studio插件:https://vlasovstudio.com/fix-file-encoding/,此插件可防止Visual Studio将BOM添加到文件的开头,这样我的所有文件都可以使用UTF-8编码和原始字符串包含特殊字符,它们将显示/写入,没有任何问题,