原标题:网上复制代码要小心,很可能会带入乱码字符

作者:codexia 文章来源:C++技术网

原文链接:

http://www.cjjjs.com/paper/xmkf/201781595304.html

现在网上有很多共享代码。有了现成的代码,我们一般都是直接将代码复制到本地,然后就开始编译运行了。但是,复制代码真的安全吗?

有些编译器做的好些,兼容性也强,对于很多异常的字符可以过滤。而有些编译器就比较弱,可能遇到异常的字符时就直接报错。所以,表面上写的好好的代码,复制过去,你竟然无法编译。问题就在于代码中隐藏的乱码字符。

关于隐藏的乱码字符的研究,请仔细阅读《Windows、Linux文件互用的乱码问题深入研究及彻底解决乱码问题》。此文已经详细讲述了隐藏的乱码形成的原因和解决办法即不要在乱码文件中直接删除字符。

然而隐藏的乱码来源并不只有直接删除字符引起的。不过,直接删除本身就有乱码的文件的字符,遗留了一些字符编码,因为其他编码都无法表示出来,所以就成了隐藏的乱码。不管转为什么编码,都不正常。我们删除带有乱码的文件产生的隐藏乱码字符是最初的乱码来源。然而这些乱码通过网络可以轻易的传播开来。因为这些乱码字符本身就是一个字符编码,只是没有对应的字符而已。所以在文本中是可以携带的,通常表现为空格一样字符,但不是真的空格,只是无法显示,一般都显示为空格或者问号了。

我们来看一个真实的例子:我们从文章《libuv服务器端包装类源代码分享》共享的代码里复制,然后看看复制后的代码是什么样的。放在Notepad++里是这样的:

我们已经设置了Notepad++显示所有字符,而这里看到的空格并不是真正的空格,只是无法对应到字符的乱码而已。我们再来用UE看看:

同样,我们也显示所有的字符,这里依然可以看到不是空格字符的空格。Notepad++和UE都将不支持的字符显示了空格。那么我们来换一个编辑器,换成Linux的vim编辑器。结果如下:

现形了!!!vim编辑器将不支持的字符用问号表示出来了,而不是直接显示为不是空格的空格。而这些不可表示的字符,在一些编译器可能就会表现异常了。不过我提供的这个代码是从网上复制下来的,然后经过改造,再分享出来了。殊不知,这个过程,竟然一直在携带者隐藏的乱码字符。因为VS等编译器比较强大,可以处理好这些乱码字符,然而像python解释器就不能处理好,就会报编码错误。

所以,现在你应该知道,随便在网上复制代码,为什么总会出现一些莫名其妙的错误了吧。当然,VS也有不能处理的字符的,也会提供文件编码有问题的。

知道了问题,那么我们就来解决问题吧。在前面提到的文中了,我们是避免创造这样的隐藏的乱码字符。本文我们是如何避免被传播中的乱码中招。也就是说,如何安全的复制代码?

我们可以借助Notepad++或UE软件,在视图菜单中,设置显示所有字符。如果代码中有中文,那么新建的文件设置为UTF-8格式。然后将代码复制粘贴到新建的文件中。此时你简单观察一下,如果还是显示为空格的字符,用查找替换的方式一并替换为空格。这样被替换之后,原来看到的空格是有一些符合代替显示的,Notepad++用点号代替显示空格,UE用下划线代替显示空格。这样,再将处理过的代码放到编译器编译,就没有奇怪的问题了。

建议你形成这样的习惯,也避免传播这样的带有乱码的字符的代码。复制的人就少些麻烦。自己养成习惯之后,也可以避免很多不必要的问题。返回搜狐,查看更多

责任编辑:

linux如何复制代码不乱码,网上复制代码要小心,很可能会带入乱码字符相关推荐

  1. 网上复制代码需谨慎,莫名其妙报错看这里!

    文章目录 问题描述 解决办法 问题描述 我已经有有两次遇到这种情况:从网上复制一段代码,自以为完美没有bug了,可是编译器总是提示有问题? 例如: Vivado提示错误: 对于这种问题,也就是: [H ...

  2. MyEclipse使用总结——MyEclipse去除网上复制下来的来代码带有的行号

    一.正则表达式去除代码行号 作为开发人员,我们经常从网上复制一些代码,有些时候复制的代码前面是带有行号,如: MyEclipse本身自带有查找替换功能,并且支持正则表达式替换,使用正则替换就可以很容易 ...

  3. 从网上复制代码到文档里格式混乱的解决办法

    文章目录 问题: 解决方案: 1.解决换行混乱 2.保持语法高亮 3.代码高亮网站 问题: 有时从网页复制代码到WPS文档,发现内容没有换行,挤在一起.像下图.要逐行调整很麻烦. 解决方案: 1.解决 ...

  4. 格式化网上复制过来的源代码

    背景: 当我们从网上复制一些源代码到本机的时候,一定会带上一些非常规字符(特殊字符),为了让源代码更规范,我们一般需要作一些处理: 1. 将连续的多个空格.制表符压缩成一个 2. 删除行尾多余的空格或 ...

  5. 自动复制吱口令html,使用clipboard.js实现复制吱口令功能的示例代码

    最近在工作中有一个需求,就是需要使用一个按钮实现相应内容的复制.在网上找了很多解决方案,最后对比之下选择了clipboard.js插件来进行实现.因为它不依靠flash以及其他框架,而且体积小使用简单 ...

  6. linux集群自动化脚本和增量复制

    linux集群自动化脚本和增量复制 Linux集群shell自动化脚本和集群增量增量复制 xcall.sh代码: xcall.sh脚本解释: xsync.sh代码: xsync.sh脚本解释: 自定义 ...

  7. Linux下文件夹的移动与复制

    Linux下文件夹的移动与复制 封面图片由文心一格AI生成 在Linux系统中,移动和复制文件夹是常见的任务.无论你是想要备份数据.迁移文件夹到其他位置还是归档数据,掌握文件夹的移动和复制技能都是必要 ...

  8. 防复制html,代码实现网站防复制,防采集

    自己建好了网站,但是如果不做处理,自己网站上的内容很容易被别人复制到其它网站上,对于自己网站的SEO优化不利. 更有甚者,很多人采用采集软件疯狂的采集我们网站内容,不但窃取了我们网站的内容,而且还严重 ...

  9. Linux之vim全选、全部复制、全部删除

    Linux之vim全选.全部复制.全部删除 全选(高亮显示):按esc后,然后ggvG或者ggVG 全部复制:按esc后,然后ggyG 全部删除:按esc后,然后dG

  10. Linux shell 对于文件的删除,复制,修改文件名等操作

    2019独角兽企业重金招聘Python工程师标准>>> 修改文件名或者修改文件夹名 mv file1 file2 把当前目录下的file1文件名改成file2,如果该目录下有file ...

最新文章

  1. Cmd使用方式--命令行运行程序
  2. java自定义字段_自定义字段的设计与实现(Java实用版)
  3. 【机器学习】NMF(非负矩阵分解)
  4. php 随机在文章中添加锚文本_锚文本对网站SEO优化有什么帮助?
  5. 字节跳动面试官:千峰java培训多少钱
  6. MyEclipse could not redeploy(不能重新部署)的解决办法
  7. 机器学习之特征选择 (feature_selection)
  8. [FFmpeg] 拼接音频
  9. 基于Springboot的爬虫项目
  10. C语言练手项目—流星雨表白—程序员的浪漫—脱单神器
  11. RTKlib源码解析:ppp和rtkpost中的周跳检测函数
  12. 检测屏幕.html,15款html5响应式网站跨屏幕测试工具
  13. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例53
  14. HIT 大物实验 数据处理代码
  15. SQL注入的攻击与防御(简单篇)
  16. Sqoop技术—安装及使用教程
  17. 【JAVA】删除整个文件夹(深度删除)
  18. 担心PPT封面页不够出彩?这些例子建议收藏
  19. 怎么用计算机算npv,CFA考试使用的计算器的用法
  20. cass常用命令快捷键

热门文章

  1. 制作u盘winpe启动盘_微PE工具箱 (WePE),绿色纯净的WinPE启动盘/U盘重装系统工具...
  2. Java itext tiff转换pdf
  3. Redis 下载安装
  4. android 获取路由器id,华为路由器从旧路由获取宽带帐号和密码具体教程
  5. 2017计算机二级c语言题库,2017年计算机C语言二级考试题库
  6. 零一块学计算机二级题库,2017年计算机二级office题库及答案
  7. Paraview 5.9.0升级为Paraview 5.10.0之后报错
  8. RC有源滤波器之低通滤波器(一)
  9. 傅里叶分析斯坦恩中文版pdf_傅里叶分析
  10. STM32F107单片机驱动Dp83848以太网芯片程序