首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Visual Studio Code

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

  •  
  •   Osk · 47 天前 · 1477 次点击
    这是一个创建于 47 天前的主题,其中的信息可能已经有所发展或是发生改变。

    复现

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

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

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

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

    ========

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

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

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

    13 回复  |  直到 2019-04-07 15:34:50 +08:00
        1
    josephpei   47 天前 via Android
    有个东东叫 editorconfig 了解下
        2
    Osk   47 天前   ♥ 1
    @josephpei editorconfig 指的是全局设置??? 然而我就是需要在全局设置里面打开自动编码检测啊
        3
    herozzm   47 天前 via iPhone
    尽量不依赖 ide 的编码检测 你要优化
        4
    Osk   47 天前
    @herozzm 没办法优化, 有些文件他就必须是 GB18030 的, 不然我直接全局 UTF-8 了
        5
    sonyxperia   47 天前
    都是自己手动的……
        6
    maokwen   47 天前 via Android
    应该没有好的避免方法,因为文件头不含编码信息。一堆英文中几句中文注释这种我觉得比较难检测出来。
    可能的替代:如果 vscode 能支持魔法注释会好一点,比如这个 issue: https://github.com/Microsoft/vscode/issues/36230
        7
    boris1993   47 天前 via Android
    如果可以的话,从源头解决,固定使用 UTF-8,以前的文件逐步改编码

    如果你说了不算,找项目经理反映
        8
    josephpei   47 天前 via Android
    https://editorconfig.org/
    每个项目根目录写一个配置文件,指定编码,换行符,缩进方式,可用通配符设置不同文件不同设置,编辑器打开这个目录内的文件,自动修改自身设置
        9
    SoloCompany   47 天前
    那些推荐 editorconfig 的, 麻烦先看一下这个 issue 吧

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

    ANSI (GB18030): 正常处理中文
    记事本的 Unicode: 卒.
    UTF-8 有 BOM/没 BOM: 卒.
        13
    Osk   47 天前
    @maokwen 希望有 fallback encoding 这个功能, 或者根据用户配置的编码列表来猜.

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

    @josephpei 现在就是类似这样的, 每一个新建的工作区都要去调一下设置. 或者复制 .vscode/setting.json 文件.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3862 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 07:38 · PVG 15:38 · LAX 00:38 · JFK 03:38
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1