打开 VS Code 的自动编码检测.
新建一个文件另存为 UTF-8, 关闭文件, 再打开.
然后文件可能默认被打开为 Windows 1252 了.
致命的地方是, 有些文件一开始是没有中文 /emoji 等非 ANSI 字符的, 没注意到就修改并保存了, 可能会影响个别字符...虽然一般不至于.
========
好吧, 混用编码是我的锅, 主要是默认的 workspace 里面 GB18030/UTF-8 等编码都有, 换行符也是什么都有, 依赖编码检测功能.
暂时的解决办法是修改新工作区的设置, 关闭自动编码检测, 统一成 UTF-8, 很烦.
VSCode 的 github issue 里面好像有几个报告的, 但没修复的感觉...
1
josephpei 2019-04-07 12:49:37 +08:00 via Android
有个东东叫 editorconfig 了解下
|
3
herozzm 2019-04-07 13:00:25 +08:00 via iPhone
尽量不依赖 ide 的编码检测 你要优化
|
5
sonyxperia 2019-04-07 13:05:31 +08:00
都是自己手动的……
|
6
QNLvw5fLfr7c 2019-04-07 13:28:01 +08:00 via Android
应该没有好的避免方法,因为文件头不含编码信息。一堆英文中几句中文注释这种我觉得比较难检测出来。
可能的替代:如果 vscode 能支持魔法注释会好一点,比如这个 issue: https://github.com/Microsoft/vscode/issues/36230 |
7
boris1993 2019-04-07 13:42:51 +08:00 via Android
如果可以的话,从源头解决,固定使用 UTF-8,以前的文件逐步改编码
如果你说了不算,找项目经理反映 |
8
josephpei 2019-04-07 13:46:59 +08:00 via Android
https://editorconfig.org/
每个项目根目录写一个配置文件,指定编码,换行符,缩进方式,可用通配符设置不同文件不同设置,编辑器打开这个目录内的文件,自动修改自身设置 |
9
SoloCompany 2019-04-07 13:55:44 +08:00
那些推荐 editorconfig 的, 麻烦先看一下这个 issue 吧
https://github.com/editorconfig/editorconfig-jetbrains/issues/58 |
10
dacapoday 2019-04-07 14:04:57 +08:00
VS Code 这些现代编辑器 不善于应对 文件编码混用这种古代开发习惯。
要么每次手动换编码,要么统一项目中所有文件的编码。 事实上从一开始就不该混用,要么维持古代的 GB18030,要么全部升级到 UTF-8。 |
11
Nasei 2019-04-07 14:48:14 +08:00
@Osk 我挺好奇必须是 gb18030 的情况, 能说一下吗? 我以前也遇到过类似的遗留代码, 是利用 c 字符串的编码做了一些事情
|
12
Osk OP @Nasei cp936 环境下的 Windows .cmd 脚本: 来一句 `echo 你好`
ANSI (GB18030): 正常处理中文 记事本的 Unicode: 卒. UTF-8 有 BOM/没 BOM: 卒. |
13
Osk OP |
14
abcdxe2v 293 天前
发现这个编码不好自动检测,同样的 E4B896 ,utf-8 是世,UTF-16LE 是룤,GB18030 是涓
|