洛水的博客

  • 首页
  • 文章
    • 吹水教程
    • 日常吹水
    • 文章归档
  • 留言
  • 工具
    • API
    • 文件镜像
    • OneIndex
    • OneDrive
    • 贴吧签到
  • 功能
    • 邮箱
  • 友链
  • 关于
    • 关于我
  1. 首页
  2. 日常吹水
  3. 正文

为什么大佬提醒我们当在Windows运行项目的时候一定一定不要用Windwos自带的记事本编辑配置文件【科普向文章】

2020年3月16日 5619点热度 58人点赞 6条评论

我相信大家都遇到这种情况,但是很多人也不知道为什么。所以说我也讲(水)一下(文章)。

故事也是今天说起,今天我那边同学在部署项目说这边有个错误看一下。

Traceback (most recent call last):
File "run.py", line 28, in 
dict_user = cfg.read_user()
File "T:\wdnmd\config_loader.py", line 71, in read_user
dict_user = toml.load(f)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\toml\decoder.py", line 134, in load
return loads(f.read(), _dict, decoder)
File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\site-packages\toml\decoder.py", line 227, in loads
original, i)
toml.decoder.TomlDecodeError: Found invalid character in key name: '['. Try quoting the key name. (line 1 column 2 char 1)

然后我喵了一眼以为是配置文件格式错误了,排除问题后以为是编码错误,后来叫他用UTF-8保存一下文件。结果还是个鸟样子。

后来发现他用Windows记事本编辑文件我去。所以说为什么Windows自带的文件会出这种问题。

当我们用记事本的时候,随便编辑一个,保存为UTF-8文件,然后用winhex打开查看。

不难发现Windows自带的记事本,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。

这就相当于这本来就是我的最终版作业答案,你却打上了自己的标记说是你的。(我相信大家小时候有这种偷别人完成作业的想法)

它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。

Python读取文件时候,也会造成很多麻烦。如果要用读取这类文件的话,得用这种方法打开。

with open('文件.txt', encoding='utf-8-sig') as f: dic_user = toml.load(f)

所以说为啥不自动检测该文件是什么编码再读取呢?

要是有这种闲事情还不如去优化代码,付出的精力还不如去修个BUG(搞砸了说不定还弄出一堆新BUG)。

这就是为什么大佬叫我们当在Windows运行项目的时候一定一定为啥不要用Windwos自带的记事本编辑配置文件。

当然,新版本的Windwos记事本(目前我用的是版本1909 (OS内部版本18363.720))已经解决了这个问题,保存的时候会看到几个选项了。

所以说我就好奇这么久了巨硬的程序猿没发现这个问题呢?到了2020年才解决。

(标题为什么这么长,我也不知道呢~)

第一次写科普向文章,有错误还是请大佬指出。( ̄▽ ̄)~*

标签: 暂无
最后更新:2020年3月16日

洛水

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

  • CZM

    utf-8加bom是微软自己搞的

    2020年3月18日
    回复
  • CZM

    微软:明明是我先来......

    2020年3月18日
    回复
    • 洛水.山岭居室

      @CZM 用户:那可不是 :huaji:

      2020年3月30日
      回复
  • 大老赖不赖

    今天被BOM搞了一下突然想起这篇文章

    2021年11月24日
    回复
    • 洛水.山岭居室

      @大老赖不赖 经 典 回 放

      2021年11月29日
      回复
  • 名字郝寄

    焯,原来是这样吗?

    2023年6月16日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    COPYRIGHT © 2025 洛水.山岭居室的博客. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang