前些日子单位网站改版要求我将一个文学类子站转换一下后台,该子站由“翔宇”CMS系统生成,由于数据量不是很大,我便采用了简便的采集办法来转移数据,在转换过程中遭遇到UTF-8编码下的特殊空格问题,让我费了一番周折。

该子站页面内容为UTF-8编码,采集过来以后需要转换成GB2312编码,然后再写成静态文件。从设置采集规则到正式采集都非常顺利,页面内容被完整地抓取过来并存入数据库,不过内容中出现很多“问号”,这些“问号”就是UTF-8编码下的空格,如果不处理这些“问号”生成静态文件时会提示错误。我尝试用

Replace(content,"?"," ")

Replace(content,"?"," ")

来进行替换,发现替换不成功,可见转换后的“?”号不是普通的“ ”问号。我尝试用left函数单独取出这个字符,然后再转成ASCII码看看,发现的转换后的码值是“63”,而十进制的“63”不就是常规的“?”号吗?看来这个字符还不能进行ASCII转码,转换过就无法再还原回去了!

为了解决这个问题我查找了些资料,终于发现了问题的原因:在UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的宽度不会被压缩,所以排版中常能用到它。但是GB2312、Unicode之类并没有这样的字符,所以转换后会显示为“?”号,只是显示为问号而不是真正的问号,所以无法被替换!

既然通过采集已将内容转换成GB2312编码了,又无法使用常规的办法替换,网站迁移工作顿时陷入僵局。如果将“0xC2 0xA0”转换为GB2312编码的字符,然后再拿这个字符去替换,应该可以解决问题。说实在的,好久都没有搞ASP了,很多函数也都忘了,一时也找不到这样的转换函数,最后采用了一个笨法子解决了这个问题:

处理过程是这样的:

在正式采集之间,先临时采集一个页面,取出其中的“?”空格这个字符,并将该字符存入“缓存”中,然后就开始正式的采集工作了,每采到一个页面就拿“缓存”中的字符进行全文替换,替换成常规的“ ”空格。速度稍微慢一点但效果很好!

在写这篇文章之前我还在考虑这个问题,也可能是水平有限吧,转换函数始终搞不定,如果哪位高手看到本文不妨告之一二,谢谢!

linux 空格变问号,遭遇UTF-8编码转换后,空格变成问号的问题相关推荐

  1. html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程

    html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...

  2. Linux终端语系设置,iconv语系编码转换命令

    一.介绍 有时候在命令行输入命令后会显示乱码,其实是语系的不一样导致的:比如说在英语语序下不会显示中文 打印中文语系的日期 将中文语系改为英语语系 提示:设置语系只在本次命令行操作中生效,退出命令行后 ...

  3. java linux urlencode_java字符编码转换研究(转)

    1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...

  4. Linux C gbk utf-8编码转换

    2019独角兽企业重金招聘Python工程师标准>>> 用linux C 下的函数调用创建中文目录.文件等,字符串的编码格式要求是utf-8格式的. 那么如果linux C下如何进行 ...

  5. Linux下中文显示乱码 -- linux编码转换

    工欲善其事 必先利其器 Linux在稳定运行服务器的方面 一直是霸主 如此优秀 优秀 优秀的 人类高质量机器(狗头) ~~~~~~~~~~~~优雅~~~~~~~~~~~~ Linux下中文显示乱码,即 ...

  6. JAVA字码的转换_java字符编码转换研究(转)

    1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...

  7. Dw序号列表如何通过html语言加,使用DW软件实现html编码转换的详细步骤

    HTML转换不能直接通过记事本打开后手动修改代码里的字母就认为完成编码转换修改,这样直接修改后果很容易造成修改后的网页在浏览器中打开出现html乱码情况(html文件怎么打开). 假如你的HTML编码 ...

  8. dw选项卡代码_使用DW软件实现html编码转换的详细步骤

    HTML转换不能直接通过记事本打开后手动修改代码里的字母就认为完成编码转换修改,这样直接修改后果很容易造成修改后的网页在浏览器中打开出现html乱码情况(html文件怎么打开). 假如你的HTML编码 ...

  9. php dreamweaver转编码,用DW软件批量实现html编码转换的详细步骤 另附utf-8与gb2312互转软件小工具...

    两种方法 ,一种是使用Dreamweave软件,另外附一个批量转换的小软件. HTML转换不能直接通过记事本打开后手动修改代码里的字母就认为完成编码转换修改,这样直接修改后果很容易造成修改后的网页在浏 ...

  10. dw选项卡代码_借助dw软件对html编码转换的方法(dw设置编码)

    常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里pCSS5介绍使用DW软件快速转换转化设置教程. HTML转换不能直接通过记事本打开后手动修 ...

最新文章

  1. 定时器表达式各组成部分详解
  2. Pig安装与配置教程
  3. 彭博社称飞书被要求下架一个月、Zoom推出5.0版日活超3亿、GoogleDuo全面转向AV1等|Decode the Week...
  4. ABB机器人的 备份与恢复
  5. 【LeetCode】3月30日打卡-Day15
  6. jQuery两把利器
  7. oracle的错误代码如何查看对应的错误信息
  8. 浮动特性-脱标(HTML、CSS)
  9. Web App 前端构建(纯净版)
  10. Git Cheat sheet
  11. xcode 4 with subversion SVN server–Tips
  12. 基于kubectl实现红队K8S模拟对抗
  13. svn客户端删除服务器文件,怎么使用Tortoise SVN客户端上传删除文件、创建删除文件夹...
  14. stm32 SSI读编码器
  15. 如何理解电容、电感产生的相位差
  16. 配置文件和日志文件导出方法
  17. Towards Adversarial Attack on Vision-Language Pre-training Models
  18. 什么是数字签名?(内含漫画图解)
  19. Java研发岗面试复盘总结附答案+考点
  20. 一些比较实用的书籍推荐

热门文章

  1. java ship_用Java对象来解答世界悖论难题“忒修斯之船”
  2. Android动画全篇系列(二)——补间动画
  3. 储存卡格式化怎么恢复?给力的操作!
  4. 实数单竖线,向量双竖线,范数双竖线加下标,矩阵单竖线
  5. 12款精品网盘资源搜索网站,只有你想不到没有它搜不到的
  6. flink 滚动窗口、滑动窗口、会话窗口、全局窗口
  7. web技术分享| 前端秘籍之“易容”术
  8. Win10 网络连接处空白什么都没有,电脑无法上网
  9. ODC 3.4.0 现已上线,让数据库开发更简单
  10. 练一练思维缜密程度。有程式xyz+yzz=532,其中x、y、z都是整数,用c++编写一个程序,求x、y、z分别代表什么数字