解决leetcode-publisher的代码中文乱码BUG

本文首发在我的个人博客:https://jlice.top/p/7ttkr/。欢迎大家前去参观,么么哒~

在之前的 {% post_link 撸了个LeetCode题解仓库自动生成与发布的工具 撸了个LeetCode题解仓库自动生成与发布的工具 %} 中,我提到我撸了个LeetCode题解仓库自动生成与发布的工具。不过,这个工具有个遗憾:代码里的中文注释会显示为乱码。这个问题说小也小,但是,这样一来就不能写中文注释了,有时还是挺不方便的。

这个问题搁置了许久,今天终于想着把这一BUG给解决掉,顺便解决下其它的问题,像减少等待、优化页面等。这里说下代码里的中文乱码的BUG。

也许是为了安全吧,LeetCode在submission详情里将代码中的一些符号使用了其Unicode码进行转换。例如,\n会转为\\u000A>会转为\\u003E等。

之前的处理方式很粗暴:

code = code.encode('utf-8').decode('unicode-escape')

这样,这些符号就会还原为本来的形式,但这样做会导致中文乱码。以前觉得没什么,但是,一直在代码里不写中文注释,久了还是觉得很不方便。甚至使得自己不爱写注释了,这是个很不好的习惯。

这次发现,代码里的中文在转换前是可以正常显示为中文的。因此,只要把转换过的符号找出来,替换成本来的形式,不就可以了吗?

for ch in set(re.findall(r'\\u\w{4}', code)):
    code = code.replace(ch, ch.encode('utf-8').decode('unicode-escape'))

试了下,果然可以。于是,以后可以在代码里试着加点中文注释了~

然后,对生成的题解仓库也做了点小小的美化,稍微漂亮了那么点吧:

解决leetcode-publisher的代码中文乱码BUG_第1张图片

其实是借鉴别人的。。。

当然,也欢迎使用这个小工具:jlice/leetcode-publisher: ? Automatically generate and publish LeetCode solution repository ❤️ LeetCode题解仓库自动生成与发布

你可能感兴趣的:(博客)