V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
XIVN1987
V2EX  ›  问与答

悲剧了: sublime 编辑过程中文件乱码

  •  
  •   XIVN1987 · 2017-05-09 11:37:47 +08:00 · 3996 次点击
    这是一个创建于 2785 天前的主题,其中的信息可能已经有所发展或是发生改变。

    文件原本是 GB2312 编码,用 Sublime Text 3 + ConvertToUTF8 插件打开编辑,编辑过程中 sublime 突然报错说文件无法使用 GB2312 编码保存,使用 UTF-8 编码保存,,然后文件就乱码了,,用 UTF8 和 GBK 编码打开都是乱码,,请问这种情况怎么恢复??

    UTF-8 编码打开:±È½ÏÆ÷Õý¶ËÄÚ²¿»ù×¼µçѹ = 0.30+0.15*[0..3]

    GBK 编码打开:卤脠陆脧脝梅脮媒露脣脛脷虏驴禄霉脳录碌莽脩鹿 = 0.30+0.15*[0..3]

    正确内容:比较器正端内部基准电压 = 0.30+0.15*[0..3]

    都说 Python 编码坑,,没想到 Python 写的编辑器编码也坑啊,太悲催了,,,

    14 条回复    2017-05-10 10:34:27 +08:00
    zj9819
        1
    zj9819  
       2017-05-09 11:59:56 +08:00
    Sublime Text 在编码和换行符方面还挺坑的…试下 notepad++或者 beyondcompare 呢,后者切换编码很方便,试试看有没有救…
    lneoi
        2
    lneoi  
       2017-05-09 12:04:59 +08:00
    因为编码问题 弃用 sublime 了 转投 vscode
    zhanglintc
        3
    zhanglintc  
       2017-05-09 13:19:22 +08:00 via iPhone
    根据我的经验来看,已经无法恢复了。

    Sublime+utf8 插件的话,要注意保存的时候点慢一点。因为我发现每次点击保存后,编码都要重新识别和载入一次。这个过程中再次点击保存很大可能出现你说的乱码情况...
    imn1
        4
    imn1  
       2017-05-09 13:44:48 +08:00
    11 个汉字变 22 个汉字,用 utf-16 be/le 各打开试试
    lwbjing
        5
    lwbjing  
       2017-05-09 13:55:56 +08:00
    以前在 win 下面经常这样,后面换了 os x 下貌似没怎么碰到了
    ETiV
        6
    ETiV  
       2017-05-09 15:00:11 +08:00 via iPhone
    文件名改成.txt 然后丢 chrome 里试试
    浏览器换编码方便些
    Ouyangan
        7
    Ouyangan  
       2017-05-09 15:12:04 +08:00
    扔到 jetbrains 家的 IDE 中试试 ,编码不对它会提示 convert,或者 reload ,很爽
    XIVN1987
        8
    XIVN1987  
    OP
       2017-05-09 16:12:43 +08:00
    @zhanglintc
    感觉还是换个支持直接打开 GBK 编码的编辑器吧,,像 ConvertToUTF8 这种打开、编辑、保存都要在后端转换编码的方法感觉不太安全,,,
    其他问题都能忍,,这种会破坏文件的 bug 绝对不能忍,,整个文件的中文注释都丢掉了

    看来 sublime 适合那种只需要 utf-8 编码的场景,,像我这种不得不用 GBK 编码的不得不舍爱啊!!!
    zhanglintc
        9
    zhanglintc  
       2017-05-09 16:15:24 +08:00
    @XIVN1987 #8 只能看个人咯, 我反正每次都等一下, 觉得还 OK.
    XIVN1987
        10
    XIVN1987  
    OP
       2017-05-09 16:15:56 +08:00
    @ETiV
    @Ouyangan
    文件现在的编码既不是 GBK,,也不是 UTF-8,,其他编码我也从来没用过,,想不出来会是什么编码

    用 chardet.detect()检测文件编码,,结果是 ASCII,,不知道怎么办了!!
    In [31]: chardet.detect('SWM1000.h')
    Out[31]: {'confidence': 1.0, 'encoding': 'ascii', 'language': ''}
    XIVN1987
        11
    XIVN1987  
    OP
       2017-05-09 16:23:26 +08:00
    @zhanglintc
    可是万一哪天手快保存快了咋办??又没法 Ctrl+Z

    而且你也说了没有办法恢复,,整个文件就毁了!!

    数据安全第一位,,毁数据不能忍,,就算概率低也还是要未雨绸缪啊,,不然等数据真乱了后悔就迟了!!
    zhanglintc
        12
    zhanglintc  
       2017-05-09 16:27:03 +08:00
    @XIVN1987 #11 诶, 不对, 如果发现得早, 是可以 Ctrl + Z 的.

    就是我用的时候都会看一下, 如果中文显示正常, 那么保存的时候也 OK, 不会乱码. 只是保存后可能要等一下, 等它从乱码状态恢复到中文状态. 这个时候如果点快了乱码了, 及时 Ctrl + Z 是可以恢复的.

    你这种情况, 已经乱码了, 然后还尝试修改了编码, 我也遇到过, 的确是无力回天了.
    XIVN1987
        13
    XIVN1987  
    OP
       2017-05-10 09:47:47 +08:00
    @zhanglintc

    问题解决了,,原来在 CoverteToUTF8 的 README.zh_CN.md 文件里就有解决方法,如下:

    * 问:我的文件被保存为 UTF-8,而且变成了乱码,要如何恢复?

    答:请打开这个文件,并确认它的编码是 UTF-8,然后选择菜单项目 File > Save with Encoding > Western (Windows 1252),关闭再重新打开该文件即可。


    亲测有效,,这下可以放心继续使用 sublime 了 O(∩_∩)O~~
    zhanglintc
        14
    zhanglintc  
       2017-05-10 10:34:27 +08:00 via iPhone
    @XIVN1987 学习了,多了个恢复的办法了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1144 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.