vs默认设置代码文件保存为UTF-8

2023-05-16

    VS这小娘们儿时不时地犯神经,碰到了免不了腹诽一下微软那个产品经理(虽然我很希望和他做同事),比如你加个中文注释,就会因为文件编码保存格式不支持而编译出错。

    于是又找度娘求奶,虽然会翻墙,但还是习惯先搜中文答案(我不会承认自己英语不好的)。果然不出所料,千篇一律的说“文件->高级保存选项->保存为UTF-8”,真真讨厌自己英语不好了。。。

    哎!重要的事情说一遍:要想做一个优秀的程序员,一定要学好数学和英语!!!

    不吐槽了,不然容易被人吐槽。

    在个人 VS 安装目录里,我的是:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\vcprojectitems,能看到两个文件:hfile.h 和 newc++file.cpp,我们打开VS新建工程后,每次添加新建项时,所有的 .h 文件都是复制的 hfile.h 本身,所有的 .cpp 文件都是复制的 newc++file.cpp 本身。而安装完 VS后,这俩文件都是默认保存为 GB2313 的,直接用 VS 打开这俩文件,保存为 UTF-8,竟然提示无操作权限?!你妹~

    好吧,拷贝这俩文件到桌面,用 VS 打开,保存为 UTF-8(带BOM),然后强行覆盖原来位置的俩文件。这样,再用 VS 添加新建项时,就默认保存为 UTF-8(带BOM)了

    不过,作为一个志向 Linux 编程的人,怎么能接受 “带BOM” 这种拍脑袋的设定呢?于是修改为 UTF-8(不带BOM),结果不好使了?!你妹呀!!

    勉强能接受这个设定的,就这样用吧。不能接受的,装插件吧。。。

    ps:如果有其它方法能修改代码文件默认保存格式的,又看到这句话的,请联系我,可以技术交流下,么么哒~

---------------------------------------------------------分割线---------------------------------------------------------

最近又扭头用起了 vs2022,新增了插件可以指定默认新建源码文件格式。

扩展 -> 管理扩展 -> 搜索“Force UTF-8”,安装插件后重启 vs 就可以指定默认了。

但是对于已经有的源码文件,还是没法批量修改。

还好学过一点 python,无奈只能手撸代码实现这个功能,仅供参考。

# -- coding: utf-8 --
# 批量修改源码文件的编码方式为utf-8
# 注意,将此 py 放在 sln 同目录
# UTF-8-SIG 对应 vs 设置的 UTF-8(带 BOM)

import os
from chardet import detect

# 代码格式获取
def predict_encoding(file_path):
    with open(file_path, 'rb') as f:
        d = detect(f.read())
        file_encoding = d['encoding']
    return file_encoding

# 获取目录下所有源文件绝对路径
def get_filepaths(dir):
    filepaths = []
    for rootpath, _, files in os.walk(dir):
        for file in files:
            if file.endswith(".cpp") or file.endswith(".cc") or file.endswith(".h") or file.endswith(".hpp"):
                filepaths.append(os.path.join(rootpath, file))
    return filepaths

filepaths = get_filepaths("./")
for fn in filepaths:
    with open(fn, 'rb+') as fp:
        content = fp.read()
        if len(content)==0:
            continue
        else:
            codeType = detect(content)['encoding']
            content = content.decode(codeType, "ignore").encode("UTF-8-SIG")
            fp.seek(0)
            fp.write(content)
            print(fn, ":已修改为 utf8 带 BOM 编码")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vs默认设置代码文件保存为UTF-8 的相关文章

  • Qt中unicode转utf-8

    最经在研究AT指令接受短信 xff0c 短信是unicode编码 xff0c 接受后需要根据系统的编码方案进行相关的转码 比如接受到了一串字符4F60597D xff0c 它是 你好 的unicode编码 xff0c 一个unicode编码
  • python utf-8转汉字

    其实也不麻烦 xff0c 看下边的代码 汉字编码转换 testgbk 61 39 汉字 39 testunit 61 testgbk decode 39 gbk 39 汉字解码 testutf8 61 testgbk encode 39 u
  • html标签中的<meta charset="utf-8">是什么鬼?

    首先来说明一下 utf 8 是一种字符编码 charset 61 utf 8 是告知浏览器此页面属于什么字符编码格式 xff0c 下一步浏览器做好 翻译 工作 常见的字符编码有 xff1a gb2312 gbk unicode utf 8
  • Flutter FormatException: Bad UTF-8 encoding 0xc3 (at offset 172)

    是文件编码问题 1 xff0c 打开 Android Studio 进入设置界面 Ctrl 43 Alt 43 S 或 File gt Settings 打开如下界面 xff1a 2 xff0c 将 Project Encodeing 设置
  • vs2019修改编码方式为UTF-8的方法

    原因 git上下载的项目编码有问题 xff0c 不识别中文或者编码不是utf 8 xff0c 之前其实也遇到过 xff0c 处理完了就忘记了 xff0c 又遇到这种糟心的事情了 xff0c 就顺手记录下 方法 检查系统的语言编码 设置 gt
  • linux下将gbk文件转换为utf-8

    titledatetagscategories linux下将gbk文件转换为utf 8 2019 11 23 10 49 58 0800 编码 problems 转自Linux下GBK文件编码批量转换UTF 8命令 在工作中 xff0c
  • VS2017/2019中默认编码问题,修改文本编码格式 为UTF-8

    1 修改VS中单个文本编码方式 VS2017 2019中默认格式为 GB2312 很多时候可能出现乱码情况 xff0c 就是编码问题 xff0c 接下来 xff0c 可以修改编码方式 xff1a 操作方法如下所示 xff1a 首先 xff0
  • vs默认设置代码文件保存为UTF-8

    VS这小娘们儿时不时地犯神经 xff0c 碰到了免不了腹诽一下微软那个产品经理 xff08 虽然我很希望和他做同事 xff09 xff0c 比如你加个中文注释 xff0c 就会因为文件编码保存格式不支持而编译出错 于是又找度娘求奶 xff0
  • QT UTF-8转GBK编码

    在Qt5中使用Unicode来存储 操作字符串 xff0c windows下是GBK编码 UTF 8 转 GBK QString appLink span class token operator 61 span span class to
  • Linux下解决GBK迁移到UTF-8中文名乱码

    在windows上使用ftp上传文件到Linux上 xff0c 中文名称在Linux系统中显示为乱码 虽然将Linux的env设置了LANG 61 en US UTF 8 并且本地的Shell客户端编码也设置成UTF 8 xff0c 但在S
  • 解决MySQL无法插入中文数据问题(UTF-8编码)

    我花了好几个小时找过各种方法 xff0c 最终靠这个方法实现了中文插入 xff0c 我都快要喜极而泣了 xff0c 分享给大家 xff0c 真的很实用 一些关于查看和修改字符集的MySQL知识 xff1a 查看mysql的字符集 xff1a
  • linux中打开txt文件乱码,将gbk格式转换为utf-8格式

    中文乱码的原因是windows下是gbk编码 xff0c 而linux下是utf 8格式 在linux下需转换文件所在的文件夹下执行下列命令 xff1a 加 c 是为了忽略无效的字符 iconv f gbk t utf8 tmp txt g
  • matlab中文乱码的解决(UTF-8不支持的问题)

    1 解决editor中的UTF 8不支持的问题 xff0c 需要加入下面几行 在matlab 安装的目录的bin子文件夹中找到lcdata xml文件 xff1a 打开加入 lt Locale entries example gt lt l
  • C语言实现GB2312和UTF8之间的编码转换

    C语言实现GB2312和UTF8之间的编码转换 GB2312 GB2312编码适用于汉字处理 汉字通信等系统之间的信息交换 基本集共收入汉字6763个和非汉字图形字符682个 GB2312中对所收汉字进行了 分区 处理 字符集分成94个区
  • UTF-8 中的代理字符是什么?

    我有一个奇怪的验证程序 用于验证 utf 8 字符串是否是有效的主机名 PHP 中的 Zend Framework Hostname valdiator 它允许 IDN 国际化域名 它将每个子域与由其十六进制字节表示定义的字符集进行比较 两
  • 从 powershell 调用时 Iconv 正在转换为 UTF-16 而不是 UTF-8

    我在尝试在 powershell 脚本中使用 iconv 将某些文件的编码从 ISO 8859 1 批量转换为 UTF 8 时遇到问题 我有这个bat文件 工作正常 for f in txt do echo f C Program File
  • UnicodeDecodeError:“ascii”编解码器无法解码位置 47 中的字节 0x92:序号不在范围内(128)

    我正在尝试使用 Python 在 StringIO 对象中写入数据 然后最终使用 psycopg2 的 copy from 函数将此数据加载到 postgres 数据库中 首先 当我这样做时 copy from 抛出错误 错误 编码 UTF
  • 使用c++和qt时的重音问题

    我正在用西班牙语编写一个程序 我想告诉用户文件已加载 用西班牙语来说是 ui gt teLog gt append Se carg el archivo filename 然而 西班牙语部分的输出为 归档文件 我知道问题在于编码 我想我需要
  • 保留 UTF-8 作为默认编码

    我尝试将 UTF 8 保留为 Python 中的默认编码 I tried gt gt gt import sys gt gt gt sys getdefaultencoding ascii 我也尝试过 gt gt gt import sys
  • 在文本文件上书写时,重音符号和特殊字符无法正确显示

    这就是我正在做的事情 我在网站上进行网络爬虫以供个人使用 以复制文本并将书籍的章节设置为文本格式 然后使用另一个程序将其自动转换为 pdf 以将其放入我的云中 一切都很好 直到发生这种情况 特殊字符无法正确复制 例如重音在文本文件上显示为

随机推荐

  • ubuntu系统下各个目录的一般作用

    1 这是根目录 xff0c 一个Ubuntu系统下只有一个根目录 2 root 系统管理员的目录 3 boot 系统启动文件 4 bin 存放系统程序 5 etc 存放系统配置方面的文件 6 dev 存放与设备有观点文件 xff0c 例如
  • C/C++中枚举类型enum使用

    1 说明 xff1a 枚举enum的出现 xff0c 主要是为了解决一些特定属性的赋值 xff0c 变量取值仅在一定有限范围内的问题 例如一年只有十二个月取值 xff0c 一个星期只有七天情况 xff0c 人的性别只有男女两种等 这些属性如
  • Matlab中save实现保存数据到mat文件的正确使用

    主要需要注意save savePath A 和 save savePath 39 KSD 39 两种写法的区别 1 普通保存在当前文件夹下 save matPath mat span class hljs literal A span B
  • C/C++笔试必须熟悉掌握的头文件系列(三)——stdlib.h/cstdlib

    1 说明 stdlib h 头文件即标准库头文件 xff08 standard library xff09 xff0c stdlib 头文件里包含了C语言的最常用的系统函数 而C 43 43 中有对应相同作用的 cstdlib 头文件 xf
  • matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明

    1 matlab图像保存说明 matlab中读取图片后保存的数据是uint8类型 8位无符号整数 xff0c 即1个字节 xff0c 以此方式存储的图像称作8位图像 xff0c 好处相比较默认matlab数据类型双精度浮点double xf
  • PyCharm安装第三方库如Requests

    PyCharm安装第三方库是十分方便的 xff0c 无需pip或其他工具 xff0c 平台就自带了这个功能而且操作十分简便 如下 xff1a 注 xff1a 本人PyCharm已汉化 xff0c 若是英文版按括号中英文指示操作即可 1 打开
  • 关于django的ORM查询出来的数据格式的转换:OrderedDict类型转换为list;serializers序列化器配置字段可以为null

    目录 一 django查询的结果的类型是 xff1a OrderedDict类型 xff0c 如下 xff1a 二 serializers序列化器配置字段可以为null 一 django查询的结果的类型是 xff1a OrderedDict
  • pyCharm上解决安装不上pandas库问题

    最近在PyCharm上安装pandas库的时候 xff0c 总是安装不上 xff0c 提示好像是pip除了错误 我使用的是python 3 4版本 最后判断应该是自己pip版本应该太旧了 xff0c 最后再cmd更新了pip之后就行了 如下
  • 详细图解哈夫曼Huffman编码树

    1 引言 哈夫曼 xff08 Huffman xff09 编码算法是基于二叉树构建编码压缩结构的 xff0c 它是数据压缩中经典的一种算法 算法根据文本字符出现的频率 xff0c 重新对字符进行编码 因为为了缩短编码的长度 xff0c 我们
  • matlab生成随机数的rand、randi和randn三种形式

    matlab中关于随机数的产生有3种库函数 xff0c 下面我们来看看它们的形式 xff1a 1 rand 它是生成0 1之间 xff08 开环 xff0c 不包含0和1两个数 xff09 均匀分布的伪随机数 xff0c 也就是无穷次试验其
  • Linux解压tar.gz和tar.bz2的命令

    两者的命令主要是参数的不同 xff0c 解压tar gz和tar bz2不同压缩文件的命令如下 xff1a 1 解压tar gz文件 tar zxvf span class hljs preprocessor tar span span c
  • C/C++枚举enum分别打印输出枚举子和枚举值的方法

    关于枚举枚举的基础概念我这里不再介绍 xff0c 感兴趣的同学可以查阅另一篇博文C C 43 43 中枚举类型enum使用 这里我主要提一下在调试一个大型程序中遇到日志打印中一个关于枚举输出的小错误 我们知道枚举分为枚举子和枚举值 xff0
  • C++程序抛出异常后执行顺序

    1 析构函数中是否可以抛出异常 首先我们看一个常见的问题 xff0c 析构函数中是否可以抛出异常 答案是C 43 43 标准指明析构函数不能 也不应该抛出异常 xff01 C 43 43 异常处理模型是为C 43 43 语言量身设计的 xf
  • Go语言变量的生命周期

    1 变量的生命周期 生命周期是指程序执行过程中变量存在的时间段 下面我们分别来看看包变量 xff08 全局变量 xff09 和局部变量两种变量的生命周期 包变量一直常驻在内存到程序的结束 xff0c 然后被系统垃圾回收器回收 也就是说包变量
  • Linux下修改gcc和g++的版本

    xff11 前言 最近 xff0c 自己在linux调试matlab的mex的时候 xff0c 突然发现matlab R2015版本对应的mex适配环境是gcc 4 7 xff0c 而自己ubuntu的Linux对应版本默认却是gcc 4
  • ubuntu配置安装Qt4.8.4 同时配置openssl和QtWebkit

    ubuntu配置安装Qt4 8 4 这里要说明的几点 xff0c 首先项目中要用到openssl支持的在配置Qt环境时首先要安装配置openssl xff1b 其次如果要用到Qt的QtWebkit的一定要主要在配置中一定要有配置这个模块 Q
  • error LNK1104: 无法打开文件“kernel32.lib”错误 Visual Studio 2017解决办法

    出现这种情况可能是在x86下或者x64下 解决办法 视图 gt 其他窗口 gt 属性管理器 xff08 这里默认所有项目都存在该问题 xff0c 对所有vs属性设置进行调整 xff09 可以看到其中有Win32 xff08 即为x86 xf
  • 【算法】冒泡排序

    冒泡排序 假设 xff0c 有一个数组初始状态为 2 xff0c 5 xff0c 8 xff0c 4 xff0c 3 xff0c 1 下面给出排序的过程 xff1a 程序代码 xff1a public class BubbleSortCla
  • PowerMock使用问题及方案个人总结帖

    最近一直有使用PowerMock进行测试 很方便 xff0c 但是当待测试方法的调用情况比较复杂的时候 xff0c 往往不知道怎么处理 在这里把自己的解决方法整理一下做个备份 直接以问题 解决方法的方式 1 PowerMock mock 静
  • vs默认设置代码文件保存为UTF-8

    VS这小娘们儿时不时地犯神经 xff0c 碰到了免不了腹诽一下微软那个产品经理 xff08 虽然我很希望和他做同事 xff09 xff0c 比如你加个中文注释 xff0c 就会因为文件编码保存格式不支持而编译出错 于是又找度娘求奶 xff0