代码之家  ›  专栏  ›  技术社区  ›  ovanes

Visual Studio C禁用Unicode或UTF-8作为文件编码,而改用ASCII

  •  0
  • ovanes  · 技术社区  · 15 年前

    我目前正在研究一些嵌入由Visual Studio 2008生成的C文件的LaTex文档。我的问题是这些文件是用带有BOM的UTF-8编码的。这会导致乳胶产生与本帖中描述的输出类似的输出:
    Invalid characters in generated latex sources in Doxygen?

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

    • 要么导致LaTex使用正确的输入编码(直到现在,我对包导入操作失败,如:

      \使用package ucs%Unicode功能
      \使用包[Latin1]输入

    • 或者使Visual Studio保存不带BOM或纯ASCII格式的文件

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

    多谢,
    奥凡内斯

    5 回复  |  直到 7 年前
        1
  •  2
  •   David Boike    15 年前

    我相信,从设计上讲,Visual Studio没有这个选项,因为.NET是从一开始就使用Unicode构建的。

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

    我检查了几个代码文件,它们都不包含字节顺序标记。

    编辑: 更改Visual Studio项目模板

    在评论中,发问者说这些文件是由内置控制台应用程序项目模板生成的。这些存储在硬盘上,如果需要,可以进行修改。

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

    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。

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

    或者,为了安全起见,您可以将模板的名称更改为“console project-no bom”或类似的名称。在.vstemplate文件中,有一个name属性使用package属性从某个地方通过guid调用信息。可以用指定名称的简单行替换此名称行。

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

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

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

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

    项目模板(如类)可以用同样的方式进行修改-不应该花费太多的探索来查找默认和用户项目模板目录。

        2
  •  2
  •   JaredPar    15 年前

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

        3
  •  0
  •   Mica    15 年前

    您是否尝试过\usepackage[utf8]inputenc_

        4
  •  0
  •   IdontCareAboutReputationPoints    9 年前

    在vs 2015中,您可以使用 File -> Advanced save options... 对话

        5
  •  0
  •   John Doe    7 年前

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