VS Code 编码检测很难用, 大家是怎么避免的

2019-04-07 12:39:50 +08:00
 Osk

复现

打开 VS Code 的自动编码检测.

新建一个文件另存为 UTF-8, 关闭文件, 再打开.

然后文件可能默认被打开为 Windows 1252 了.

致命的地方是, 有些文件一开始是没有中文 /emoji 等非 ANSI 字符的, 没注意到就修改并保存了, 可能会影响个别字符...虽然一般不至于.

========

好吧, 混用编码是我的锅, 主要是默认的 workspace 里面 GB18030/UTF-8 等编码都有, 换行符也是什么都有, 依赖编码检测功能.

暂时的解决办法是修改新工作区的设置, 关闭自动编码检测, 统一成 UTF-8, 很烦.

VSCode 的 github issue 里面好像有几个报告的, 但没修复的感觉...

8693 次点击
所在节点    Visual Studio Code
14 条回复
josephpei
2019-04-07 12:49:37 +08:00
有个东东叫 editorconfig 了解下
Osk
2019-04-07 12:52:51 +08:00
@josephpei editorconfig 指的是全局设置??? 然而我就是需要在全局设置里面打开自动编码检测啊
herozzm
2019-04-07 13:00:25 +08:00
尽量不依赖 ide 的编码检测 你要优化
Osk
2019-04-07 13:04:19 +08:00
@herozzm 没办法优化, 有些文件他就必须是 GB18030 的, 不然我直接全局 UTF-8 了
sonyxperia
2019-04-07 13:05:31 +08:00
都是自己手动的……
QNLvw5fLfr7c
2019-04-07 13:28:01 +08:00
应该没有好的避免方法,因为文件头不含编码信息。一堆英文中几句中文注释这种我觉得比较难检测出来。
可能的替代:如果 vscode 能支持魔法注释会好一点,比如这个 issue: https://github.com/Microsoft/vscode/issues/36230
boris1993
2019-04-07 13:42:51 +08:00
如果可以的话,从源头解决,固定使用 UTF-8,以前的文件逐步改编码

如果你说了不算,找项目经理反映
josephpei
2019-04-07 13:46:59 +08:00
https://editorconfig.org/
每个项目根目录写一个配置文件,指定编码,换行符,缩进方式,可用通配符设置不同文件不同设置,编辑器打开这个目录内的文件,自动修改自身设置
SoloCompany
2019-04-07 13:55:44 +08:00
那些推荐 editorconfig 的, 麻烦先看一下这个 issue 吧

https://github.com/editorconfig/editorconfig-jetbrains/issues/58
dacapoday
2019-04-07 14:04:57 +08:00
VS Code 这些现代编辑器 不善于应对 文件编码混用这种古代开发习惯。
要么每次手动换编码,要么统一项目中所有文件的编码。
事实上从一开始就不该混用,要么维持古代的 GB18030,要么全部升级到 UTF-8。
Nasei
2019-04-07 14:48:14 +08:00
@Osk 我挺好奇必须是 gb18030 的情况, 能说一下吗? 我以前也遇到过类似的遗留代码, 是利用 c 字符串的编码做了一些事情
Osk
2019-04-07 15:30:36 +08:00
@Nasei cp936 环境下的 Windows .cmd 脚本: 来一句 `echo 你好`

ANSI (GB18030): 正常处理中文
记事本的 Unicode: 卒.
UTF-8 有 BOM/没 BOM: 卒.
Osk
2019-04-07 15:34:50 +08:00
@maokwen 希望有 fallback encoding 这个功能, 或者根据用户配置的编码列表来猜.

@boris1993 自己的一些文件, 新一点的工具统一 UTF-8 自然是没问题的.

@josephpei 现在就是类似这样的, 每一个新建的工作区都要去调一下设置. 或者复制 .vscode/setting.json 文件.
abcdxe2v
265 天前
发现这个编码不好自动检测,同样的 E4B896 ,utf-8 是世,UTF-16LE 是룤,GB18030 是涓

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/552653

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX