简介

在使用MSVC编译的时候出现“常量中有换行符”这一错误,网上搜索后可知是由于文件是utf-8编码但没有带BOM导致的。解决方法有很多,因为感觉很麻烦,所以这里我使用python来给没有BOM的文件加上BOM。

代码

import oscur_dir = os.path.dirname(__file__)
# def test():
#     u8_nb_path = os.path.join(cur_dir, 'utf-8_nobom.txt')
#     u8_b_path = os.path.join(cur_dir, 'utf-8_bom.txt')#     u8_nb = open(u8_nb_path, "rb")
#     u8_b = open(u8_b_path, "rb")#     print(u8_nb.read(1))
#     print(u8_nb.read(1))
#     print(u8_nb.read(1))
#     print(u8_nb.read(1))
#     print("")
#     print(u8_b.read(1))
#     print(u8_b.read(1))
#     print(u8_b.read(1))
#     print(u8_b.read(1))
#     # efbbbf
#     u8_nb.close()
#     u8_b.close()def has_bom(content):return len(content) >= 3 and content[0] == 0xef \and content[1] == 0xbb and content[2] == 0xbfdef to_utf8_bom_f(filename):print("To utf8 with bom: " + filename)f = open(filename, "rb")content = f.read()f.close()if not has_bom(content):f = open(filename, "wb")# efbbbfbom = bytes([0xef, 0xbb, 0xbf])f.write(bom)f.write(content)f.close()def to_utf8_bom_d(dir, filters=["h", "cpp", "c"]):for root, dirs, files in os.walk(dir):for file in files:splits = file.split('.')if len(splits) >= 2 and splits[-1] in filters:to_utf8_bom_f(os.path.join(root, file))def main():src_dir = r"D:\Src\sqlitebrowser\git_repos\sqlitebrowser\src"to_utf8_bom_d(src_dir)if __name__ == "__main__":main()

使用方法

将代码中的src_dir修改成自己的代码目录即可(根据需要修改文件filter)。

“常量中有换行符”的解决方法相关推荐

  1. Qt中提示“常量中有换行符“的解决方法

    使用QT编译界面时,免不了要使用中文,有会出现乱码,有时会提示"常量中有换行符",而不能正常编译,因此可以通过下面的方法解决. PS:本文的环境,QT5.7.1,VS2015 1 ...

  2. MSVC编译器-C2001 常量中有换行符错误解决方法

    解决方法: 主要是由于MSVC2015编译器不支持其他类型的编码格式,需要把工程文件修改成UTF-8 带签名!!,UTF-8 无签名也是不行的. 使用记事本 将文件另存为带 BOM头格式

  3. c语言 error c2001,Visual Studio error C2001:常量中有换行符(解决办法)

    在Visual Studio自动生成的项目中,碰见了一件关于文件编码的问题,集中在类似于以下的语句上: DASLog (DASProtWarn, L"(%s)消息超时,进入慢循环召唤模式.& ...

  4. qt中编译错误:error: C2001: 常量中有换行符的解决办法

    问题:qt中编译错误常量中有换行符 解决办法: 1.打开 编辑->Select EnCoding- 2.选择System->按编码保存即可. 原因: 因为Windows默认的GBK编码和U ...

  5. QT使用MSVC编译时报错C2001: 常量中有换行符

    Windows系统下默认为GBK编码:而Qt中默认编码为utf-8:有时候,GBK编码的汉字解码后再用utf-8编码则可能会报错C2001: 常量中有换行符.解决方法如下: 步骤1.设定UTF-8,添 ...

  6. VS2019报错“常量中有换行符”及中文乱码问题解决

    VS2019报错"常量中有换行符"及控制台中文乱码问题解决 1.关于报错"常量中有换行符" 主要原因:在代码中直接写中文,有一部分汉字会报错,就会提示" ...

  7. C++解决报错常量中有换行符

    C++解决报错常量中有换行符 报错详情 解决方案 报错详情 解决方案 点击高级保存选项 == 编码 == 选择简体中文(GB2312) 重新启动,报错解决

  8. 解决vc2008 utf8中文字符串报错 C2001常量中有换行符

    vs2008需要升级到sp1,然后打补丁 VS90SP1-KB980263-x86.exe c源文件以utf8 without bom保存,并添加 #ifdef _MSC_VER #pragma ex ...

  9. 解决“C2001:常量中有换行符“编译问题

        用Virsual Studio编译代码时,有时会出现"C2001:常量中有换行符"问题,出现这种现象的原因是当前编码是"UTF-8不带BOM",要改成& ...

最新文章

  1. 解题报告:AcWing 352. 闇の連鎖(树上差分、方案统计)
  2. windows下安装RabbitMQ
  3. shell将命令执行的结果赋值给 变量
  4. 多取值离散型特征工程_特征工程(完)
  5. idea 优化_JVM优化:如何利用VisualVM对高并发项目进行性能分析
  6. caffe中网络结构参数详解
  7. 2013第44周日小结
  8. 精益求精,抑或得过且过
  9. 面试系列(三):Java反射机制
  10. 存储过程与自定义函数的区别
  11. Android中矢量图形的相关知识
  12. CAD系统与PDM系统集成技术研究
  13. msdn原版系统和原版office
  14. 手机电池校正代码_手机电池校正!iPhone手机电池校正设置
  15. CSS——CSS基础知识
  16. TypeError: this.$refs.resetFields is not a function解决方法
  17. java rewind()_Java NIO Buffer的clear()、reset()、rewind()、flip()方法的区别
  18. oracle忘记解锁scott和hr用户问题
  19. python(18):网络编程(七层协议+tcp/udp+socket编程)
  20. linux shell 生成图片,shell脚本获取网页快照并生成缩略图

热门文章

  1. clion之Clion License Activation破解
  2. 编译原理实验:Java实现SLR(1)语法分析器
  3. Echarts去除x轴,y轴网格线,网格区域(背景)
  4. 黑客入门(超级详细版)
  5. 基于CAN总线步进电机驱动器设计
  6. 汇纳科技张宏俊:加强布局AI大数据,为实体商业服务
  7. ERNIE-Search: Bridging Cross-Encoder with Dual-Encoder via Self On-the-fly Distillation
  8. 有哪些高性价比的LoRa模块?
  9. 利用计算机教学的好处,计算机基础课程的重要性
  10. pyton--解决pycharm控制台中文显示unicode \xe6\x9d\x8e\xe7\x99\xbd\xe9\xa3\x9e码问题