`

空格有两个ascii值36和160

阅读更多

     空格的ascii码值是多少?今天之前,我的回答肯定是0x20(十进制就是36)。但今天碰到的一个问题让我对空格有了新的认识。空格的ascii码还可能是160。

    碰到的问题是这样的:在某一文章页面中,发现存在一个包含空格的标签(手机 随拍),点击这个标签却搜索不到这篇文章 。这篇文章是从手机上发布的,随即试了从PC上发布文章发现是正常的。检查PC上和手机上发布文章的标签数据,发现:PC上发布的标签的空格的UTF8编码是两个字节0xc2a0,结合前一篇文章(NodeJS笔记:处理非utf8编码)的编码知识,得知对应的Unicode code point为U+00A0;手机上发布的标签的空格的UTF8编码是单字节的0x20,计算得对应的Unicode code point为U+0020。这样看来,两边发布的空格的unicode不一致。日志页面上tag的链接被URLEncoder编码过了,unicode为0x20的空格被编码成了'+',但是后端拿到这个+时却没法进行自动解码(+是合法的URL的一部分?),直接当成'+'了,相当于在搜索'手机+随拍',这样肯定是得不到正确的结果的。再来看一下PC直接发布的unicode为0xA0的空格,被URLEncoder后变成%C2%A0(utf8格式),传到后端自动还原成值为0xA0的空格,这样就避免了该问题。

    这个问题从后端来看,是因为unicode为20的空格没可逆地与'+'号进行转换导致的,与具体的应用服务器有关。即空格转化成+传到前端后,前端传给后端的+没有自动地进行转化成相应空格。可通过对标签进行强制URLDecoder来解决。

    再来看看浏览器是怎么产生unicode值为0xA0的空格的。经过分析与测试发现,无论是移动端浏览器还是PC浏览器,用户在input或者textarea敲空格键输入的‘空格字符’都是unicode值为0x20的空格。但是如果设置某节点.innerHTML=' ',再通过这个节点.innerText获取其内容,将会取到unicode值为0xA0的空格。即可见0XA0与 存在某种对应关系,在ajaxer的博客扒到一张好图刚好证明了这一点,他的这篇文章提到了0xA0在OP下的一个bug:innerHTML拿到的 变成了0xA0:

 

    再来总结一下:空格的ascii码值有两个:从键盘输入的空格ascii值为0x20;从网页上的 字符转化而来的空格ascii值为0xA0

 

引自:http://nodejs.lofter.com/post/3c14e_85efc

分享到:
评论

相关推荐

    汇编语言输出ASCII码

    用表格形式汇编语言输出ASCII码,两个字符中间用空格,每15个换行~

    ascii2wav-v2.0.rar

    音频裸数据ASCII转化为wav音频文件,要求ASCII文件中数据为16进制,16bit一个点。两个音频数据之间以非16进制数字的字符间隔,如空格,或回车 ASCII文件一定命名为 “ascii.txt” 工具和ASCII文件在同一个路径

    十六进制ASCII字符串相互转化

    该软件可以完成十六进制数间的去空格,加空格,及转化为字符串,十进制等

    ASCII与字符串互转程序

    我用VB编的程序,非常的小巧实用。 字符串可以随便输入,ASCII码输入时最前面不能有空格,每两个码字之间要用一个空格隔开,如75 76 7A

    ”字符串的扩展距离”源代码

    空格与空格的距离为0,空格与其他字符的距离为一个定值k。在一般情况下,字符串A和B的长度不一定相同。字符串A的扩展是在A中插入若干空格字符所产生的字符串。在字符串A和B的所有长度相同的扩展中,有一对距离最短的...

    oracle面试题

    concat str str 连接两个字符串 LOWER 函数把字符串全部转换为小写 UPPER 函数把字符串全部转换为大写 LTRIM 函数把字符串头部的空格去掉 RTRIM 函数把字符串尾部的空格去掉 TRIM 同时去掉所有两端的空格 实际上...

    c程序设计习题参考(谭浩强三版)习题参考解答

    第1章 C语言概述 1 1.5 参照本章例题,编写一个C程序,输出以下信息: 1 1.6 写一个程序,输入a,b,c三个值,输出其中最大者。 1 第2章 程序的灵魂——算法 2 2.1 什么叫结构化的算法?...11.9有两个链表a和b,设...

    Steganography-SNOW-AVariation:这是一种创新的隐写技术,可用于隐藏两个单词之间的空格后面的文本数据。 它是流行的隐写术工具的变体 - SNOW [Steganographic Nature Of Whitespace] 由 Matthew Kwan 开发,他曾经使用“空格”和“制表符”键将 ASCII 数据隐藏在尾随空格后面。 在这个程序中,它是不可打印字符 '\r' 回车的 SNOW 序列的变体,用于在文本文件的 2 个单词之间的空格中对文本消息进行编码

    它是流行的隐写术工具的变体 - SNOW [Steganographic Nature Of Whitespace] 由 Matthew Kwan 开发,他曾经使用“空格”和“制表符”键将 ASCII 数据隐藏在尾随空格后面。 文件描述: 动机2.txt:要隐藏的消息覆盖...

    动态规划算法的计算字符串A、B的距离。

    A1与B1具有相同的长度,那么定义字符串A1与B1的距离为相应位置上的字符的距离总和,而两个非空格字符的距离定义为它们的ASCII码的差的绝对值,而空格字符与其它任意字符之间的距离为已知的定值K,空格字符与空格字符...

    javascript 去字符串空格终极版(支持utf8)

    其实空格有两个,一个ASCII编号是32,另一个是ASCII编号是160.后者是unicode编码。以前写一个贴子ie6下准确判断空格还以是IE6不能正确判断空格。

    tcp/ip测试工具sokit

    发送区的编辑框内的字符会按照ascii值发送(多字节字符按照UTF8编码),如果需要发送十六进制原始数据,请将相应数值的ascii表示放进方括号中,例如, [FF AB CD 12 12], 实际发送时会过滤掉方括号本身,以及其中的空格字符...

    JAVA字符编码问题总结

    每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出 256种状态,这被称为一个字节(byte)。  也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从 ...

    字符串距离

    A1与B1具有相同的长度,那么定义字符串A1与B1的距离为相应位置上的字符的距离总和,而两个非空格字符的距离定义为它们的ASCII码的差的绝对值,而空格字符与其它任意字符之间的距离为已知的定值K,空格字符与空格字符...

    ResEditor汉化工具 |“资源编辑者”汉化版

    要补上两个空格.例如file要用"文件 "来替换.左键菜单空格在右,右键菜单空格在左. 4 保存文件 5 用makesis打包. 注意: 1 不断地保存,备份.传到手机测试!!! 2 具体哪个需要汉化,那个不需要,这就是对汉化者的考验 3 ...

    微原软件实验二:汇编语言程序设计

    1)编一程序,在显示器上显示256个ASCII代码,要求显示格式为每行显示16个字符,两个ASCII字符间空一格。 2)试编一程序,把地址偏移量为 100H 单元开始的 256 个单元分别写入: 00H,01 H,02H,03H,…,FFH 数据...

    MATLAB字符串单元数组和结构体PPT教案学习.pptx

    MATLAB 字符串还可以判断字符串中的字符是否为空格字符或者字母,实现这两个功能的函数分别为 isspace 和 isletter。isspace 用于判断字符串中的字符是否为空格字符,是空格字符则返回 1,否则返回 0。isletter 用于...

    Z文件详细格式

    * 文件内容:每一条记录218个字节,记录尾用回车换行结束,ASCII字符存盘,每个要素值高位不足补空格 * 文件初始化:首先检测Z文件是否存在,如无当月Z文件,则生成该文件,将全月逐日逐时各要素的位置一律存入相应...

    计算机基础课件:西文字符的编码.ppt

    在机内码中,为了避免汉字信息与单字节的标准 ASCII 码混淆不清,把一个汉字看作两个扩展 ASCII 码,使表示 GB2312 汉字的两个字节的最高位(b7)都等于“1”。这种高位为 l 的双字节(16 位)汉字编码就称为 GB2312...

    tiled-to-ascii:将Tiled MapsTiles(JSON)转换为ASCII表示形式

    将两个JSON文件都放在文件放置区域中。 按“生成ASCII映射”。 完成这些步骤后,您将获得如下输出(例如16x16地图的示例): ?############### ??#####?##?##### #############<## ###..########### ###.......

    GPSTuner-v5.4m

    使用方法: 1、编辑一个文本文件,文件名为 regnum.key ... 行首和中间不能有空格,保存文件为ASCII格式,不能为Unicode或UTF8格式 3、将编辑好的regnum.key copy到GPSTuner的安装目录,正常运行程序就行了

Global site tag (gtag.js) - Google Analytics