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

后端传给我的 markdown 字符串,里面包含\n 这样的换行符,前端接口接收到后,\n 变成了\\n

  •  
  •   csdoker · 2021-08-10 14:53:21 +08:00 · 2457 次点击
    这是一个创建于 962 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我目前的处理方法是用正则 replace(/\\n/g, '\n')把\\n 替换为\n
    还有更好的处理方法吗?出现这个问题的原因是不是因为字符串被自动转义了?
    25 条回复    2021-08-11 12:33:53 +08:00
    ipwx
        1
    ipwx  
       2021-08-10 15:10:57 +08:00
    这你得问你的后端同学。八成是框架有什么东西。
    PeakFish
        2
    PeakFish  
       2021-08-10 15:14:51 +08:00
    我也很纳闷这个东西, 为什么会多出来 一个斜杠 有的 双引号前面也会
    micean
        3
    micean  
       2021-08-10 15:18:25 +08:00
    最好的处理办法是让后端改了这个 bug
    csdoker
        4
    csdoker  
    OP
       2021-08-10 15:37:04 +08:00
    @micean 后端没有做任何处理。。就是把字符串通过接口里的字段给我,但是传到前端后,字符串里的\n 换行符就变成了\\n
    b821025551b
        5
    b821025551b  
       2021-08-10 15:42:05 +08:00
    后端给的 response header 声明是 json 还是 text ?
    rationa1cuzz
        6
    rationa1cuzz  
       2021-08-10 15:56:04 +08:00
    大概率是框架或者语言或者系统的问题,让后端处理吧。
    Vegetable
        7
    Vegetable  
       2021-08-10 15:56:51 +08:00
    先让后端检查数据库里存的是什么吧
    vistey
        8
    vistey  
       2021-08-10 16:25:50 +08:00 via Android
    查查数据库里吧
    csdoker
        9
    csdoker  
    OP
       2021-08-10 16:44:47 +08:00
    @b821025551b Content-Type: application/json; charset=utf-8
    csdoker
        10
    csdoker  
    OP
       2021-08-10 16:45:40 +08:00
    @rationa1cuzz 后端用的 python
    csdoker
        11
    csdoker  
    OP
       2021-08-10 16:45:54 +08:00
    @Vegetable 数据库里存的也是\n
    Vegetable
        12
    Vegetable  
       2021-08-10 16:54:29 +08:00   ❤️ 1
    @csdoker 数据库里也是\n 吗,保准吗?如 navicat 之类的工具或者 mysql 命令行,varchar text 之类的类型,包含\n 都看不到\n,而是真的会换行。如果你在数据库里看到了\n,并且字段两端没有"",那是存的时候就错了。
    ysc3839
        13
    ysc3839  
       2021-08-10 17:02:49 +08:00 via Android
    前端看网络请求返回的数据是啥。
    1010011010
        14
    1010011010  
       2021-08-10 17:05:37 +08:00
    @Vegetable #12 +1 如果能看到\n 实际就是保存了\\n
    cyrivlclth
        15
    cyrivlclth  
       2021-08-10 17:17:19 +08:00
    @csdoker 那数据库那层就存错了吧,\n 应该是看不到直接提行的。
    SZP1206
        16
    SZP1206  
       2021-08-10 17:18:17 +08:00 via Android
    楼上正解 \被转义了
    csdoker
        17
    csdoker  
    OP
       2021-08-10 17:19:00 +08:00
    @Vegetable 那应该怎么处理呢
    Hstar
        18
    Hstar  
       2021-08-10 17:19:17 +08:00
    \\n 是 \n 换行符的 json 编码,说明后端发给你的是一个 json 字符串,你是不是漏了 json 解码的过程?
    XiLingHost
        19
    XiLingHost  
       2021-08-10 17:22:56 +08:00
    干脆让他给你 base64,你解一步吧
    rationa1cuzz
        20
    rationa1cuzz  
       2021-08-10 17:28:54 +08:00
    @Vegetable +1 如果是存的是\n navicat 是看不到\n,但是接口返回字段会有\n 的,刚试了一下 python django mysql5.7,字段为 text
    csdoker
        21
    csdoker  
    OP
       2021-08-10 17:30:03 +08:00
    @Hstar 我是直接从接口返回的字段里取的,不需要解码吧。。
    Cielsky
        22
    Cielsky  
       2021-08-10 17:48:12 +08:00
    这是给转义了吧
    sunny352787
        23
    sunny352787  
       2021-08-10 18:54:35 +08:00
    @Hstar 应该就是这个原因
    csdoker
        24
    csdoker  
    OP
       2021-08-11 09:51:27 +08:00
    @sunny352787 没看懂。。给我发的就是字符串。。没有编码过的 我怎么解码
    liuidetmks
        25
    liuidetmks  
       2021-08-11 12:33:53 +08:00
    干脆 urlsafe base64 一次,把数据一次性打包发个服务器
    总能遇到转义编码的问题,烦死了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2854 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 11:41 · PVG 19:41 · LAX 04:41 · JFK 07:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.