前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >警告!你的微信聊天窗口复制粘贴的代码有风险!

警告!你的微信聊天窗口复制粘贴的代码有风险!

作者头像
生信技能树
发布于 2022-06-08 11:33:52
发布于 2022-06-08 11:33:52
2K00
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

助教最近很高产啊,前两天刚投稿了:全新购买的的Linux云服务器居然无法使用ssh登陆

下面是投稿笔记

帮一个朋友安装软件的时候,遇到一个奇奇怪怪的bug:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda create -n pyscenic python=3.7 

我检查了一下环境,conda 明明已经安装,which conda conda --help 都可以成功调出来。但是因为 conda 不是我安装的,我一开始怀疑是软件版本的问题,于是卸载重装 conda,不过还是没解决。

debug

凭借我 20年Linux 经验,我怀疑上面这句代码有看不到的bug,因为这句代码是我从微信聊天窗口复制过来的。当我重新敲了一遍,果然,正常 work 了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ conda create -n pyscenic python=3.7

可以对比一下,下面这两句看起来一模一样的代码,但是结果却不一样,到底是怎么回事呢?

首先用个“照妖镜” 让妖怪现出原形吧,第一句和第二句就是从微信聊天窗口复制过来的,echo 出来传递给 cat -A 就可以看到,编码不一样了。每个空格的前面,都变成了了一个 M-BM- 编码的字符:

也就是说,有问题的代码里的空格,不是系统可以识别的空格,或者说,这里的“空格”不是空格,这也解释是为什么报错信息是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda create -n pyscenic python=3.7 : command not found

而不是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda : command not found

如果把这句有问题的代码,放到 sublime 里面进行查看,就可以看到这个符号的原形:

这个 0xa0 字符,是采用 “windows-1252” 的编码格式,而不是默认的 “utf-8” ,系统无法识别为空格。

解决方法

对于比较少的文本,我们可以手动修改。但是作为一个“合格”的程序员,当然要用最偷懒 高效的方式来修改:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • debug
  • 解决方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档