V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chiyagao
V2EX  ›  程序员

编写代码的工作区文件路径需要全部保持纯英文么?

  •  
  •   chiyagao · 2022-08-11 19:35:14 +08:00 · 5396 次点击
    这是一个创建于 860 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2202 年了,想当年,小时候的老师一直说,为了避免不必要的 bug ,从电脑操作系统根路径一直到项目文件夹,全部用英文写。

    win 我好久没用了不知道,mac 我好像遇见过会把中文名文件转成拼音形式,暂时没写过同拼音不同中文字的文件名,大概。
    linux ,这种 centos ,逼格上去了,还是用英文吧。

    想问问大家,现在编写代码的工作区文件路径需要全部保持纯英文么?

    我还是看中文字,定位文件夹速度快、、、莓办法 银不了 尽梨了。
    56 条回复    2022-08-13 15:45:07 +08:00
    eason1874
        1
    eason1874  
       2022-08-11 19:45:50 +08:00
    用英文,加起来也没几个单词
    tomczhen
        2
    tomczhen  
       2022-08-11 19:45:57 +08:00 via Android   ❤️ 1
    不考虑跨平台带来的文件系统差异造成的文件路径合法字符集、编码不一样这个问题,现代开发语言只要合理的使用是不用特别在意这块的。

    但是你架不住各种不正确的文件路径操作代码,毕竟很多人就是真的是:在我机器上是好的。
    Ediacaran
        3
    Ediacaran  
       2022-08-11 19:49:13 +08:00   ❤️ 10
    需要,这样在终端打路径的时候不用切输入法
    rpman
        4
    rpman  
       2022-08-11 19:50:22 +08:00 via iPhone   ❤️ 4
    用英文路径可以节省 debug 时间
    用中文路径可以帮人 debug 🐶
    GP1
        5
    GP1  
       2022-08-11 19:50:50 +08:00
    单词就那么几个,用多了也就那样,说白了还是你不肯走出舒适区,那你说个屁。
    cmdOptionKana
        6
    cmdOptionKana  
       2022-08-11 19:51:55 +08:00
    自己一个人用的环境可以用中文字,毕竟好不好用自己说了算,不会影响别人,遇到问题也能自己解决。
    horseInBlack
        7
    horseInBlack  
       2022-08-11 19:52:44 +08:00
    以前学 Python2 、PHP5 等的教程,都要学如何设置字符编码避免乱码,现在好像不用这样了

    不过操作 Linux 服务器的时候,shell 的中文注释啥的会乱码,可以专门设置但是没必要,一般就简单英文描述下就行了

    不过我倒是遇到一个问题,告诉别人 Chrome 设置启动项没生效反而有了新的 bug ,网上、周围的人都没遇到过
    后来一个经验丰富的老大哥发现,那个用户设置启动项的时候用户资料文件夹中间是空格,可能是因为这样设置没成功,我们自己都习惯文件夹命名用 - 或者 _ 没注意到
    renmu
        8
    renmu  
       2022-08-11 20:07:26 +08:00 via Android
    要,因为如果有不兼容的,你得花非常多的时间来调试。
    weichengwu
        9
    weichengwu  
       2022-08-11 20:23:08 +08:00 via iPhone   ❤️ 33
    LotusChuan
        10
    LotusChuan  
       2022-08-11 20:36:47 +08:00
    个人习惯吧,如果乐于用中文那应该也会乐于解决用中文可能带来的问题。用英文对我来说主要是输入法切换的问题,图形化界面还不明显;但是命令行就影响比较大了,比如我在用 vim 编辑 main.cpp ,然后想打开./测试.cpp ,那我至少得按两次中英文切换(一次切成中文输入“测试”,一次切回英文输入“.”),在频繁切换文件的时候影响还是挺大的。
    Leoooooo
        11
    Leoooooo  
       2022-08-11 20:51:21 +08:00
    用单词方便你我他
    nightwitch
        12
    nightwitch  
       2022-08-11 20:55:40 +08:00
    在 Windows 平台想要正确处理非 ASCII 字符串是个比较麻烦的事情,尤其是包含非 BMP 平面的字符,有的 API 即使是 Unicode 版本也只能正确处理 BMP 平面内的字符,比如 lstrlenW 函数计算 `𪚥👿🇨🇳`字符串的长度,会返回 8
    zhangxzh
        13
    zhangxzh  
       2022-08-11 21:17:25 +08:00 via Android
    随便去用,仍不支持的东西,仍有兼容性问题的东西,扔了吧
    Vegetable
        14
    Vegetable  
       2022-08-11 21:50:23 +08:00
    @weichengwu 太真实了,这玩意翻译一遍没人认识
    cmdOptionKana
        15
    cmdOptionKana  
       2022-08-11 23:27:16 +08:00   ❤️ 1
    @weichengwu 中文真的非常清晰简洁。
    MajestySolor
        16
    MajestySolor  
       2022-08-12 00:21:05 +08:00
    用中文字符必然出稀奇古怪的问题,不是这里出问题就是那里出问题,不是今天出问题就是明天出问题。
    spediacn
        17
    spediacn  
       2022-08-12 01:40:42 +08:00
    做外包的时候一个全角字符都能惹出巨大麻烦,不仅仅不能用中文写,而且还得关掉输入法。全程英文,如果可以的话,操作系统都用英文,这样就不会忘记设置字符集惹出麻烦。有些老外真的烦,用 utf-8 死活不认,非得 iso-8859-1
    js8510
        18
    js8510  
       2022-08-12 01:53:05 +08:00
    你老师是过来人,他说的对。
    我想起来一个故事:
    我在外企,都是英文。又一次肯定是个中国同事在提交的 PR 里面加了个中文逗号:"," 。结果把某个自动集成平台搞挂了。。因为后端的 sql database 默认是不支持中文字符的。

    结果两个外国人 debug 几个小时没搞明白知道我出现一眼就看出来 , != ,
    seanzxx
        19
    seanzxx  
       2022-08-12 03:18:52 +08:00
    用英文主要是速度快呀,中文还要用输入法,多麻烦。
    kkocdko
        20
    kkocdko  
       2022-08-12 03:38:14 +08:00
    对于用户,我们要支持空格 /非 ascii 路径。
    对于程序员,一般都会习惯用 ascii 非空格路径,terminal 里头敲路径方便。
    FrankHB
        21
    FrankHB  
       2022-08-12 05:00:35 +08:00
    该用啥用啥,只要你清楚代价。
    最大化可移植性不是目的,否则干脆把 MS-DOS 的 8.3 也支持了,但一般显然没必要。
    编码么同一个环境通常不是问题,但不排除比较极端的例外(比如 Windows 下升级 hg 版本可能活久见乱码)。
    不过就算不考虑这些,只要可能换系统玩,文件系统大小写问题也够你喝一壶了。( NTFS 现在虽然支持大小写敏感,但得单独设置,而且设置以后像一些 ps1 命令直接罢工了。)

    @nightwitch 非 BMP 问题还不如甩锅给 Unicode 自己。一开始就妄想 BMP 解决问题,直接搞出 UCS-2 半吊子,还要 UTF-8 擦屁股,又回过头另外擦出个 U+10FFFF 的 magic number 。这还没完,刷版本到处给跟不上的兼容,Han unification 漏去重之类的添乱不说,UTS#51 什么屑玩意儿……甚至还能遇到 zzzq 问题( https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1949r7.html#all-emoji-become-excluded-instead-of-just-some ),xswl……
    即便是 BMP 在这里也还有问题,比如有多少用户敢确信清楚自己用的环境对 NFD/NFC/NFKC 的支持?能塞零宽和控制字符进去么?(虽然 OP 只是说中文基本不用管这破事。)(其实控制字符嘛,就是 ASCII 也有这个问题,但很容易限制;关键差别是 Unicode 的破烂即便不考虑版本都不是能指望人能枚举完的。)
    akring
        22
    akring  
       2022-08-12 08:58:26 +08:00
    @Vegetable #14 Lingdaotong - Gongzhongcanyu - Gongzhongtongji
    JustSong
        23
    JustSong  
       2022-08-12 09:11:15 +08:00 via Android
    @Ediacaran 不知道有没有可以补全拼音成中文的 shell 插件
    bear1man
        24
    bear1man  
       2022-08-12 09:12:39 +08:00
    太有必要了,你完全不知道什么时候会出幺蛾子。
    个人习惯,在 win 下,不止是工作路径,你的 username 最好也是英文,如果你登录微软账户,保证你的微软账户昵称是英文,不然它会给你改名。而且我个人是会打开全局 utf-8 功能的。尽管开了之后会有部分应用乱码。

    以上都是我用 win 多年总结的经验。顺便夸一句 mac os 在字符编码方面做的不错了,完全没遇到过乱码 /中文路径问题。
    murmur
        25
    murmur  
       2022-08-12 09:14:10 +08:00
    要的,我真遇到过中文路径的 bug
    nothingistrue
        26
    nothingistrue  
       2022-08-12 09:15:43 +08:00
    只要是纯的,不管是纯英文还是纯中文都是可以的。但是,现在没法纯中文。平常所说的中英文问题,实际上是纯英文跟中英混合的对比问题,自然是能用前者就用前者。
    jackmod
        27
    jackmod  
       2022-08-12 09:18:54 +08:00
    要看写什么代码,以及编译系统是怎么处理路径的。
    顺便,转移到 linux 上面反而无需在意路径用什么字符了
    ClydeX
        28
    ClydeX  
       2022-08-12 09:20:20 +08:00
    会遇到一些问题,但绝大部分都有解决方法,没啥
    Leonard
        29
    Leonard  
       2022-08-12 09:21:20 +08:00
    自己一个人开发随便,否则尽量不要用中文路径
    zyy314680012
        30
    zyy314680012  
       2022-08-12 09:22:54 +08:00 via Android
    反正我的 code 目录基本都英文的
    HeFengzz
        31
    HeFengzz  
       2022-08-12 09:24:18 +08:00
    安装一些软件或游戏的时候,你不用英文(或带有空格)可能找不到游戏存档
    HeFengzz
        32
    HeFengzz  
       2022-08-12 09:25:52 +08:00
    虽然有些无聊,但我觉得能给你一些参考

    [你的文件和目录的命名习惯是怎样的?]( https://www.v2ex.com/t/858464#reply21)
    xiaojun1994
        33
    xiaojun1994  
       2022-08-12 09:45:39 +08:00
    两年前我用 flutter 遇到过中文目录不行的问题
    mknightoy
        34
    mknightoy  
       2022-08-12 09:56:14 +08:00
    现在项目都是 utf-8 了用中文没什么问题,老项目除外

    另外别用中文的时候顺手输入了全角符号会坑死人
    chiyagao
        35
    chiyagao  
    OP
       2022-08-12 10:09:43 +08:00
    哇咔咔咔
    haodingzan
        36
    haodingzan  
       2022-08-12 10:27:15 +08:00
    @weichengwu 以前我坚持纯英文,点进来也是劝 OP 用英文,看了你的图才意识到我错哪了……
    cssk
        37
    cssk  
       2022-08-12 10:59:11 +08:00
    那必须的,comment 都英文,打起来不用切换输入法
    7gugu
        38
    7gugu  
       2022-08-12 13:28:19 +08:00
    如果要经常用终端切换路径的话,还是用全英文比较好,不用切换输入法这么麻烦
    akira
        39
    akira  
       2022-08-12 13:48:47 +08:00
    即使是 2022 年了 ,你的 XP 用户 还是在用着 XP ,你的 IE6 用户还是在用着 IE6
    世界变了很多,但其实又没有
    AoEiuV020CN
        40
    AoEiuV020CN  
       2022-08-12 16:38:49 +08:00
    我不用纠结,因为 android studio 压根不支持中文路径,
    coala
        41
    coala  
       2022-08-12 16:39:46 +08:00
    就刚刚, 我 Nacos 还在中文目录启动失败找不到配置文件呢...

    我之前还有一个全角 A 引发的 Bug , 两 A 有啥区别? 给你看看

    苏A, 苏 A

    看出来差别了吗? 两个 A 不一样的..
    Jooooooooo
        42
    Jooooooooo  
       2022-08-12 16:39:55 +08:00
    搞个最新的 emoji
    newmlp
        43
    newmlp  
       2022-08-12 16:44:33 +08:00
    用中文纯属没事找事
    sutra
        44
    sutra  
       2022-08-12 16:48:25 +08:00
    命令行还是英文更快。
    functioncloud
        45
    functioncloud  
       2022-08-12 17:02:56 +08:00   ❤️ 1
    前段时间在 win 平板上装罗技驱动,安装器死活下载不了,后来发现是中文 username 导致找不到路径
    DonDonc
        46
    DonDonc  
       2022-08-12 17:06:55 +08:00   ❤️ 1
    @coala 一直觉得某些领域还是留给 ASCII 就够了,特别是听过某些 URL 诈骗案例后。

    A U+0041 Latin Capital Letter A
    A U+FF21 Fullwidth Latin Capital Letter A
    Α U+0391 Greek Capital Letter Alpha
    А U+0410 Cyrillic Capital Letter A
    ᴀ U+1D00 Latin Letter Small Capital A
    ᴬ U+1D2C Modifier Letter Capital A
    𝙰 U+1D670 Mathematical Monospace Capital A
    𝖠 U+1D670 Mathematical Monospace Capital A
    𝖠 U+1D5A0 Mathematical Sans-Serif Capital A
    adoal
        47
    adoal  
       2022-08-12 17:51:34 +08:00
    @tomczhen 还有文件名长度问题……以前遇到一个例子,各业务合作单位交过来的抗疫报道照片、视频等资料,没有统一标准,有些比较文青的拍摄者在文件名里会写很长的介绍,写得还很生动。拷在 NTFS 移动硬盘上没问题,要 FTP 上传到 Linux 服务器就不行。为啥呢,因 Linux VFS 的文件名在语义里不包括编码,就是 as-is bytes ,用 byte 为单位计长度的,整个路径全长最多 PATH_MAX 个 byte……而 NT 是 UTF-16 编码的,以 UTF-16 单元为单位计长度。即便不考虑 NT 可以用 UNC 的超长路径,只看 MAX_PATH 的限制,在 NT 上可以的,到 Linux VFS 就严重超长。
    duke807
        48
    duke807  
       2022-08-12 18:15:08 +08:00 via Android   ❤️ 2
    中文文件名,zip 压缩包跨平台会乱码
    libook
        49
    libook  
       2022-08-12 18:38:22 +08:00
    在 Unicode 支持好的环境、语言、框架上没必要完全杜绝使用中文,但是要不要用、什么时候用、怎么用得需要根据项目具体情况来看,评估一下用中文的收益和代价是啥。
    janxin
        50
    janxin  
       2022-08-12 18:41:01 +08:00
    之前确实会有问题的,现在嘛...
    nick0x01
        51
    nick0x01  
       2022-08-12 18:44:31 +08:00
    如果做到了行业的顶尖水平,并且能维持住地位,我想用什么就用什么,用户必须跟着学。
    如果没有,行业大佬用什么我用什么。
    killeder
        52
    killeder  
       2022-08-12 19:07:00 +08:00 via Android
    不是闲的没事干或者不想自找麻烦就用英文,并且尽量不要用空格
    dcsuibian
        53
    dcsuibian  
       2022-08-12 19:48:51 +08:00
    用中文怕的不是自己程序写错,而是 IDE 、构建工具等出问题,这种时候是解决不了的。

    但如果大家都不用中文,那么这种问题就不会得到开发者的重视。
    SeanTo
        54
    SeanTo  
       2022-08-13 10:15:37 +08:00 via Android
    有必要。需要考虑的不仅仅是操作系统的问题,还有应用软件。我很早就习惯用英文名字,实在不会写的单词用拼音。有很多软件字符处理不好,但自己习惯直完全没有问题就发现不了,但架不住别人给你的文件会出现中文甚至含空格的情况。用过一个叫 EasyBuilder 的触摸屏开发环境,中文名打开编辑保存都没问题,一编译就通不过,查了很久才发现是文件名的问题。编译实际上是另外的程序完成的,开发程序的人可能并未考虑到字符兼容性问题,平常发现不了。
    gefranks
        55
    gefranks  
       2022-08-13 13:21:00 +08:00 via iPhone
    用英文并且路径里面不要带空格,避免出现莫名其妙的问题搞半天
    lfzyx
        56
    lfzyx  
       2022-08-13 15:45:07 +08:00
    所以现在的 00 后是连英文都退化成这样了?还把中文转成拼音,笑死
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3614 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 10:31 · PVG 18:31 · LAX 02:31 · JFK 05:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.