windows 的记事本不能保存为 ANSI 编码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ryansvn
V2EX    Windows

windows 的记事本不能保存为 ANSI 编码?

  •  
  •   ryansvn 2023-06-24 11:13:47 +08:00 4130 次点击
    这是一个创建于 889 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虚拟机新装的 win11 发现不能运行原先的 bat 文件,网上的方法全部试了,都还是不行。 后来发现,这个 bat 文件是 utf-8 格式的,随另存为 ANSI ,再试还是不行。 然后再用记事本打开查看,发现编码依然是 utf-8 ,随再次另存 ANSI 一次,再打开看,居然还是 utf-8 。

    不甘心,在 win10 下试了下,发现居然都是,也就是现在记事本无论存储的时候,是否选在 ANSI ,都不起作用,再打开看都是 utf-8 格式的。

    不知道各位是否能够复现?

    ps: 另外,win11 不能运行 bat 还是没有解决,无论是 bat 头部添加 chcp 来指定代码,还是修改注册表,还是设置环境变量,总之,都是不生效,无奈,只能一行行复制到 cmd 中去执行。

    28 条回复    2023-06-26 20:19:25 +08:00
    hxy100
        1
    hxy100  
       2023-06-24 11:20:38 +08:00   1
    虽然老是说 Notepad++作者屁股坐不正,但是对于常年使用 Notepad++的用户来说,根本木有这种问题。
    ---
    YGHMXFAL
        2
    YGHMXFAL  
       2023-06-24 11:27:07 +08:00
    1 楼+1,NPP 好评

    其实使用啥编码来存储好像无所谓吧?都能执行 BAT 啊?只要你 CHCP 和存储编码匹配就行了~

    前提是,无论你存储使用啥编码,必须是\r\n 结尾~
    ryansvn
        3
    ryansvn  
    OP
       2023-06-24 11:32:39 +08:00
    @YGHMXFAL 不知道怎么回事,在 win10 下可以顺利执行的 bat ,在这个 win11 中死活不运行,一闪而过。

    这个保存编码的事情,是在找办法运行 bat 中无意中发现的。
    YGHMXFAL
        4
    YGHMXFAL  
       2023-06-24 11:34:38 +08:00
    @ryansvn #3 脚本最后加一行 PAUSE 来阻塞,看看报错
    ryansvn
        5
    ryansvn  
    OP
       2023-06-24 11:35:38 +08:00
    @YGHMXFAL 已经添加了,一样闪退,说明根本就没有运行到那个位置。奇怪的是,我把命令一行行复制到 cmd 中,顺利执行
    roycestevie6761
        6
    roycestevie6761  
       2023-06-24 11:36:49 +08:00
    把中文删了
    roycestevie6761
        7
    roycestevie6761  
       2023-06-24 11:38:33 +08:00
    把整个命令文件贴上来看看
    YGHMXFAL
        8
    YGHMXFAL  
       2023-06-24 11:42:46 +08:00
    @ryansvn #5 那么大概率就是我在 2 楼所说的问题,结尾不是\r\n,你想想啥办法改改,就用 NPP 就不错
    documentzhangx66
        9
    documentzhangx66  
       2023-06-24 11:44:50 +08:00
    1.使用 UTF-8 是一件好事,这个习惯你要坚持,能让你避免很多乱码问题。
    从数据库、编程代码、HTML js css 、字符数据文本文件等等,建议都统一为 UTF-8 。

    2.Windows 的 CMD 默认不是 UTF-8 编码,你需要在打开 CMD 后,先输入:
    chcp 65001
    把编码改为 UTF-8 。
    documentzhangx66
        10
    documentzhangx66  
       2023-06-24 11:47:54 +08:00
    Note*pad++ 只能识别 UTF-8 ,但其实 UTF-8 又分为有没有 BOM 两种。你需要使用更高级的编辑器,推荐 UltraEdit ,它更强大,更专业 。
    documentzhangx66
        11
    documentzhangx66  
       2023-06-24 11:48:15 +08:00
    麻蛋什么时候 Note*pad 都能成为违禁词,这也太扯蛋。
    hxy100
        12
    hxy100  
       2023-06-24 11:51:18 +08:00
    @documentzhangx66 你仔细看 1 楼的截图,Notepad++是可以区分有无 BOM 头的,并且可以一键转换
    vituralfuture
        13
    vituralfuture  
       2023-06-24 12:36:32 +08:00
    用 python ,读取文件,解码然后重新编码
    NoOneNoBody
        14
    NoOneNoBody  
       2023-06-24 13:08:12 +08:00
    你这个 bat 不能运行,应该跟 ansi/utf8 无关,找其他原因吧
    loginv2
        15
    loginv2  
       2023-06-24 13:22:15 +08:00   1
    @NoOneNoBody 有关的,我也遇到过,所以每次都要很小心
    geelaw
        16
    geelaw  
       2023-06-24 13:29:11 +08:00   1
    第一,检查你是否把本机的默认编码设置为 UTF-8 了,如果这样的话 ANSI (实际上记事本的 ANSI 是本机默认编码)等于 UTF-8 。

    第二,如果你的文本文件在 UTF-8 和 ANSI 下编码一样,那么记事本可能会优先识别为其中一个编码。

    第三,你可能应该考虑把 bat 保存为 Unicode (UTF-16 LE),这样 Windows NT 系列都可以运行。

    第四,检查其他问题,比如 bat 必须用 \r\n 作为行结尾,以及插入 pause 调试之。
    xuc
        17
    xuc  
       2023-06-24 13:30:40 +08:00
    检查一下区域设置,如果“Beta 版:使用 Unicode UTF-8 提供全球语言支持”被选中,那么记事本中 ANSI 就是指 UTF-8
    https://vip2.loli.io/2023/06/24/ympkow5JEuB1ZW9.png
    gyf304
        18
    gyf304  
       2023-06-24 13:55:25 +08:00 via Android
    如果只有 ASCII 字符 ANSI 和 UTF-8 是等价的。保存了以后是没有任何区别的。
    Hellert
        19
    Hellert  
       2023-06-24 14:15:42 +08:00 via Android
    bat 不能运行,是因为换行符,必须是 crlf ,unix 换行符是不行的
    ooppoo
        20
    ooppoo  
       2023-06-24 16:32:46 +08:00 via Android
    为什么我可以运行
    Stoney
        21
    Stoney  
       2023-06-24 18:34:08 +08:00 via iPhone
    mxT52CRuqR6o5
        22
    mxT52CRuqR6o5  
       2023-06-24 18:38:44 +08:00 via Android
    不是不能保存为 ansi ,是不能指定编码格式打开一个文件,打开时是通过某种算法去猜编码格式
    mxT52CRuqR6o5
        23
    mxT52CRuqR6o5  
       2023-06-24 18:40:14 +08:00 via Android
    打不开 bat 是其他问题
    ryansvn
        24
    ryansvn  
    OP
       2023-06-25 09:11:56 +08:00
    @Hellert 我重新使用记事本编辑一边这个 bat ,再保存,都还是不行。应该不是换行符的问题。很是奇怪
    ryansvn
        25
    ryansvn  
    OP
       2023-06-25 09:12:40 +08:00
    @documentzhangx66 我也是奇怪,编辑了回复回复不了,没想到居然是 N***++的问题,这个居然也是敏感词,很无语
    ryansvn
        26
    ryansvn  
    OP
       2023-06-25 09:13:34 +08:00
    @geelaw 感谢指引,各种方法都测试了,还是不行,非常奇怪,win10 下同样 bat 可以运行,这就非常无语了
    ryansvn
        27
    ryansvn  
    OP
       2023-06-25 09:14:12 +08:00
    @ooppoo 发现不是所有的 bat 不运行,有些不行,很费解
    Hellert
        28
    Hellert  
       2023-06-26 20:19:25 +08:00
    把 echo off 都删除,在 cmd 运行一下不就知道啥原因了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1004 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:32 PVG 02:32 LAX 10:32 JFK 13:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86