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

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

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

    虚拟机新装的 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  
       308 天前   ❤️ 1
    虽然老是说 Notepad++作者屁股坐不正,但是对于常年使用 Notepad++的用户来说,根本木有这种问题。
    ---
    YGHMXFAL
        2
    YGHMXFAL  
       308 天前
    1 楼+1,NPP 好评

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

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

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

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

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

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

    第四,检查其他问题,比如 bat 必须用 \r\n 作为行结尾,以及插入 pause 调试之。
    xuc
        17
    xuc  
       308 天前
    检查一下区域设置,如果“Beta 版:使用 Unicode UTF-8 提供全球语言支持”被选中,那么记事本中 ANSI 就是指 UTF-8
    https://vip2.loli.io/2023/06/24/ympkow5JEuB1ZW9.png
    gyf304
        18
    gyf304  
       308 天前 via Android
    如果只有 ASCII 字符 ANSI 和 UTF-8 是等价的。保存了以后是没有任何区别的。
    Hellert
        19
    Hellert  
       308 天前 via Android
    bat 不能运行,是因为换行符,必须是 crlf ,unix 换行符是不行的
    ooppoo
        20
    ooppoo  
       307 天前 via Android
    为什么我可以运行
    Stoney
        21
    Stoney  
       307 天前 via iPhone
    mxT52CRuqR6o5
        22
    mxT52CRuqR6o5  
       307 天前 via Android
    不是不能保存为 ansi ,是不能指定编码格式打开一个文件,打开时是通过某种算法去猜编码格式
    mxT52CRuqR6o5
        23
    mxT52CRuqR6o5  
       307 天前 via Android
    打不开 bat 是其他问题
    ryansvn
        24
    ryansvn  
    OP
       307 天前
    @Hellert 我重新使用记事本编辑一边这个 bat ,再保存,都还是不行。应该不是换行符的问题。很是奇怪
    ryansvn
        25
    ryansvn  
    OP
       307 天前
    @documentzhangx66 我也是奇怪,编辑了回复回复不了,没想到居然是 N***++的问题,这个居然也是敏感词,很无语
    ryansvn
        26
    ryansvn  
    OP
       307 天前
    @geelaw 感谢指引,各种方法都测试了,还是不行,非常奇怪,win10 下同样 bat 可以运行,这就非常无语了
    ryansvn
        27
    ryansvn  
    OP
       307 天前
    @ooppoo 发现不是所有的 bat 不运行,有些不行,很费解
    Hellert
        28
    Hellert  
       305 天前
    把 echo off 都删除,在 cmd 运行一下不就知道啥原因了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2900 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:45 · PVG 15:45 · LAX 00:45 · JFK 03:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.