灵魂拷问:假如你用了中文域名,那么你系统里面是以 Punycode 为准,还是中文为准? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xiangyuecn
V2EX    程序员

灵魂拷问:假如你用了中文域名,那么你系统里面是以 Punycode 为准,还是中文为准?

  •  1
     
  •   xiangyuecn
    xiangyuecn 2020-07-19 23:17:30 +08:00 2723 次点击
    这是一个创建于 1908 天前的主题,其中的信息可能已经有所发展或是发生改变。

    业务逻辑中遇到了一个棘手的问题,比如你写了一个接口给客户用,客户可能就会有 Unicode 域名

    前端: 用户自行填写自己的中文域名:"拼夕夕.中国"

    后端: 客户中文域名网站发起了接口请求,到达了我方的服务器,此时是 Punycode: "xn--6rsa717e.xn--fiqs8s"

    问题出现了,你总要进行至少一种转换:Unicode 转 Punycode 或者 Punycode 转 Unicode 。


    系统存 Punycode:

    肉眼十分不友好,看多了会瞎。前端回显时至少要进行一次转回 Unicode 。


    系统存 Unicode:

    人类友好,机器不友好,每个请求都要将 url 中的 Punycode 至少转一次 Unicode (如果是老系统,估计是要重构)。


    存两份格式 or 拒绝 Unicode 域名?

    没有此选项。


    那么,有用过中文域名什么的的老哥吗,你们系统里面怎么处理这种麻烦事?

    8 条回复    2020-07-20 13:40:48 +08:00
    xiangyuecn
        1
    xiangyuecn  
    OP
       2020-07-19 23:27:49 +08:00
    仔细衡量了一下,可能系统存 Punycode 的成本最低,就是反人类就是了。客户填写也必须填写 Punycode 形式域名。

    然后就出现了,域名列表里面一堆 asdfasdfas 毫无规则的域名列表,要眼瞎 不过这样后端无需任何处理,省事
    lhx2008
        2
    lhx2008  
       2020-07-19 23:48:57 +08:00   1
    接口支持传 punycode 和中文,数据库存 punycode,前端显示 punycode 和 中文
    baobao1270
        3
    baobao1270  
       2020-07-20 03:06:33 +08:00   1
    当然是存 Punycode 啦
    ochatokori
        4
    ochatokori  
       2020-07-20 03:15:53 +08:00 via Android   1
    存 punvcode
    一般又不会直接看数据库
    输出给人看的时候再转 unicode 呗
    shiny
        5
    shiny  
       2020-07-20 03:25:19 +08:00   1
    参考浏览器地址栏:显示的时候显示文字,实际储存 Punycode
    raptium
        6
    raptium  
       2020-07-20 10:03:51 +08:00   1
    我觉得 URL 里其它位置的中文和域名里有中文情况一样啊。

    Path 或者 Query String 里有中文,浏览器地址栏可能显示中文,然而储存一般还是存成 urlencode 之后的形式。

    至于说看多了会瞎?我觉得也没差。一般人应该也不可能人脑 decode `%E4%B8%AD%E5%9B%BD` 之类的,反正都是人看不懂的,不能说 `%E4%B8%AD%E5%9B%BD` 看着不瞎, `.xn--fiqs8s` 看着就瞎吧?
    unicloud
        7
    unicloud  
       2020-07-20 12:01:16 +08:00   2
    我没有和中文域名的请求打过交道,但是,如果是我选择的话,会使用系统存 Punycode,这是 Raw Data,后续怎么处理,怎么显示,都会基于这个 Punycode 来转换。
    Punycode 主要是为了处理国际化域名( Internationalized Domain Names )而制定的,当然不限于中文。这里有一篇关于 Punycode 的简单介绍: https://www.dute.org/punycode 可以看看
    woomly
        8
    woomly  
       2020-07-20 13:40:48 +08:00
    当然是系统存 Punycode 了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3698 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 00:51 PVG 08:51 LAX 17:51 JFK 20:51
    Do have faith in what you're doing.
    ubao 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