【CSDN平台BUG】markdown图片链接格式被手机端编辑器自动破坏

news/2024/11/14 2:04:58/

bug_0">bug以及解决方法

现在是2024年8月,我打开csdn手机编辑器打算修改一下2023年12月的一篇文章,结果一进入编辑器,源码就变成了下面这个样子,我起初不以为意,就点击了发布,结果图片全部显示不出来了。

在这里插入图片描述
而当我修改了一下链接格式后,图片又能正常显示了

在这里插入图片描述

如果文章坏了,可以把md源码存成文本,用npp之类的文本编辑器写一个正则式进行字符串替换

正则式写法:\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传\([A-Za-z0-9\-]*\)
替换为:![图片标题]

实际效果如下:

错误式子: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oL9nPdT2-1722564488609)(https://i-blog.csdnimg.cn/blog_migrate/f8cf5ba6d4b75d418112c55641f4043e.png)]

修正后: ![图片标题](https://i-blog.csdnimg.cn/blog_migrate/f8cf5ba6d4b75d418112c55641f4043e.png)]

还有个小尾巴,所以还要把)]替换为)

现在文章就彻底恢复正常了!

在这里插入图片描述

bug_28">bug原理

上述过程说来简单,其实经过了一个小时的排查和客服咨询,客服没起到什么作用,纯粹是我自己排查出来的。这个问题有两大原因:

  1. 2024年csdn自家markdown编辑器里上传的图片,自动生成的链接格式中间有一级目录是"/direct",而23年同样操作生成的链接,中间那一级目录是“/blog_migrate”
  2. 手机端编辑器无法识别23年的链接,一旦遇到就会直接转化为“[外链图片转存失败
    ···”这样的格式,破坏掉markdown源码里的所有图片的格式,如果此时你把这个错误的源码发布出去,整片文章就被破坏了

锐评

和客服掰扯了一个小时,我严肃地和他们说了这个问题,可笑的是客服竟然听不懂我这样的表述,最后还是我自己排查出来的问题,而且我让他们帮我恢复一下历史版本,他们还做不到,我真服了,客服从头到尾毫无作用。

此外还要吐槽的就是那个客服界面做的也实在是令人蛋疼,这个算个小瑕疵吧,真正大的问题还是客服的专业素质不够强,有踢皮球的感觉。

如果这个平台的反馈机制以后还这么差,无法保证图文平台最基本的数据安全的话,以后谁还敢在这个平台上发文章呢?没人会不担心自己发出去的文章莫名其妙的没了或者是图片莫名其妙的丢了,我就直接在CSDN平台上攻击CSDN平台了,爱审不审,反正我也不指望这个平台赚钱啥的,话就撂这了,不改进的结果就是灭亡,如果以后CSDN倒了,我正好可以拿出这篇文章品味品味。

最终依我之见,文章还是要掌控在自己手中,md源码和文章的pdf都要备一份(保存图片和其位置)


http://www.ppmy.cn/news/1504161.html

相关文章

一文带你掌握C++模版

12. C模板 什么是模板 模板编程也可以叫做泛型编程,忽略数据类型的一种编程方式 //求最值问题 int Max(int a,int b) {return a>b?a:b; } double Max(int a,int b) {return a>b?a:b; } string Max(string a,string b) {return a>b?a:b; …

【Axure教程】拖拉拽编辑页面

低代码开发平台通常提供拖拉拽编辑页面的功能,使用户无需编写大量代码即可创建复杂的应用程序和页面。这种平台的特点是通过图形用户界面来进行开发,用户可以拖拽组件到画布上进行布局和配置。 那今天作者就教大家在Axure里怎么制作拖拉拽动态编辑页面的…

【Java】解决如何将Http转为Https加密输出

目录 HTTP转HTTPS一、 获取 SSL/TLS 证书二、 安装证书2.1 Apache2.2 Nginx 三、更新网站配置四. 更新网站链接五. 检查并测试六. 自动续期(针对 Lets Encrypt) HTTP转HTTPS 将网站从 HTTP 转换为 HTTPS 能够加密数据传输,还能提高搜索引擎排…

SQL查询注意事项

判断字符串长度要用函数CHAR_LENGTH(str),他会返回字符串的长度,如果使用length(str)函数,在对中文字符或特殊字符时,返回的是在当前编码下该字符的字节数。如在mysql中的utf-8编码情况下,length(¥)返回结果…

day_30

452. 用最少数量的箭引爆气球 class Solution:def findMinArrowShots(self, points: List[List[int]]) -> int:points.sort(keylambda x:x[0])r points[0][1]cnt 1for i in points:if i[0] > r:cnt 1r i[1]else:r min(r, i[1])return cnt有趣,之前做过的…

3D魔方lua核心脚本制作

制作不易,请好好欣赏 U→R→F→D→L→B 废话不多说,上脚本 --魔方基本运行程序 --星空露珠优化脚本lua --主核心来自分享 --666 --[=[ #G4=I 1 # 2-----------2------------1 # | U1(0) U2(1) U3(2) | # …

Web3时代:科技与物联网的完美结合

随着信息技术的不断进步和物联网应用的普及,Web3技术作为下一代互联网的重要组成部分,正逐渐与物联网技术深度融合,共同开创了新的科技时代。本文将深入探讨Web3技术与物联网的结合,探索它们如何共同推动未来科技发展的新趋势和应…

浅谈ArkTS/ArkUI组件开发

浅谈ArkTS/ArkUI组件开发 本篇文章将从一个移动开发思维的维度出发,浅谈ArkTS组件开发的基础问题,比如状态管理、装饰器、属性传递、自定义构建函数、插槽、条件渲染,模块引用和路由跳转等。 创建项目 这里使用截图简单过一下,不…