csdoker
V2EX  ›  问与答

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

  •  
  •   csdoker · Aug 10, 2021 · 4191 views
    This topic created in 1912 days ago, the information mentioned may be changed or developed.
    我目前的处理方法是用正则 replace(/\\n/g, '\n')把\\n 替换为\n
    还有更好的处理方法吗?出现这个问题的原因是不是因为字符串被自动转义了?
    25 replies  •  2021-08-11 12:33:53 +08:00
    ipwx
    ipwx
    Aug 10, 2021
    1
    这你得问你的后端同学。八成是框架有什么东西。
    PeakFish
    PeakFish
    Aug 10, 2021
    2
    我也很纳闷这个东西, 为什么会多出来 一个斜杠 有的 双引号前面也会
    micean
    micean
    Aug 10, 2021
    3
    最好的处理办法是让后端改了这个 bug
    csdoker
    csdoker
    OP
    Aug 10, 2021
    4
    @micean 后端没有做任何处理。。就是把字符串通过接口里的字段给我,但是传到前端后,字符串里的\n 换行符就变成了\\n
    b821025551b
    b821025551b
    Aug 10, 2021
    5
    后端给的 response header 声明是 json 还是 text ?
    rationa1cuzz
    rationa1cuzz
    Aug 10, 2021
    6
    大概率是框架或者语言或者系统的问题,让后端处理吧。
    Vegetable
    Vegetable
    Aug 10, 2021
    7
    先让后端检查数据库里存的是什么吧
    vistey
    vistey
    Aug 10, 2021 via Android
    8
    查查数据库里吧
    csdoker
    csdoker
    OP
    Aug 10, 2021
    9
    @b821025551b Content-Type: application/json; charset=utf-8
    csdoker
    csdoker
    OP
    Aug 10, 2021
    10
    @rationa1cuzz 后端用的 python
    csdoker
    csdoker
    OP
    Aug 10, 2021
    11
    @Vegetable 数据库里存的也是\n
    Vegetable
    Vegetable
    Aug 10, 2021❤️1
    12
    @csdoker 数据库里也是\n 吗,保准吗?如 navicat 之类的工具或者 mysql 命令行,varchar text 之类的类型,包含\n 都看不到\n,而是真的会换行。如果你在数据库里看到了\n,并且字段两端没有"",那是存的时候就错了。
    ysc3839
    ysc3839
    Aug 10, 2021 via Android
    13
    前端看网络请求返回的数据是啥。
    1010011010
    1010011010
    Aug 10, 2021
    14
    @Vegetable #12 +1 如果能看到\n 实际就是保存了\\n
    TomatoCLI
    TomatoCLI
    Aug 10, 2021
    15
    @csdoker 那数据库那层就存错了吧,\n 应该是看不到直接提行的。
    SZP1206
    SZP1206
    Aug 10, 2021 via Android
    16
    楼上正解 \被转义了
    csdoker
    csdoker
    OP
    Aug 10, 2021
    17
    @Vegetable 那应该怎么处理呢
    Hstar
    Hstar
    Aug 10, 2021
    18
    \\n 是 \n 换行符的 json 编码,说明后端发给你的是一个 json 字符串,你是不是漏了 json 解码的过程?
    KagurazakaNyaa
    KagurazakaNyaa
    Aug 10, 2021
    19
    干脆让他给你 base64,你解一步吧
    rationa1cuzz
    rationa1cuzz
    Aug 10, 2021
    20
    @Vegetable +1 如果是存的是\n navicat 是看不到\n,但是接口返回字段会有\n 的,刚试了一下 python django mysql5.7,字段为 text
    csdoker
    csdoker
    OP
    Aug 10, 2021
    21
    @Hstar 我是直接从接口返回的字段里取的,不需要解码吧。。
    Cielsky
    Cielsky
    Aug 10, 2021
    22
    这是给转义了吧
    sunny352787
    sunny352787
    Aug 10, 2021
    23
    @Hstar 应该就是这个原因
    csdoker
    csdoker
    OP
    Aug 11, 2021
    24
    @sunny352787 没看懂。。给我发的就是字符串。。没有编码过的 我怎么解码
    liuidetmks
    liuidetmks
    Aug 11, 2021
    25
    干脆 urlsafe base64 一次,把数据一次性打包发个服务器
    总能遇到转义编码的问题,烦死了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1567 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 23:06 · PVG 07:06 · LAX 15:06 · JFK 18:06
    ♥ Do have faith in what you're doing.