特殊的空格-ASCII码值160

1、问题记录

记录一次测试接口过程中出现的奇怪报错

接口传过来的时间参数为"2021-12-16 12:22:23"

使用SimpleDateFormat解析"yyyy-MM-dd HH:mm:ss"时出现java.text.ParseException: Unparseable date: "2021-12-16 12:22:23"异常。

仔细看了没有问题。

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr = "2021-12-16\u002012:22:23";
		String errorDateStr = "2021-12-16\u00A012:22:23";
		try {
			System.out.println("dateStr: " + dateStr.length());
			System.out.println("errorDateStr: " + errorDateStr.length());
			System.out.println("dateStr: " + dateStr.replaceAll(" ", "@"));
			System.out.println("errorDateStr: " + errorDateStr.replaceAll(" ", "@"));
			System.out.println("dateStr: " + (dateStr.charAt(10) + 0));
			System.out.println("errorDateStr: " + (errorDateStr.charAt(10) + 0));
			System.out.println("-" + "\u0000" + "-");
			sdf.parse(dateStr);
			sdf.parse(errorDateStr);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			errorDateStr = errorDateStr.replaceAll("\u00A0", "\u0020");
			try {
				sdf.parse(errorDateStr);
			} catch (ParseException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}

会发现使用dateStr不会解析失败,而使用errorDateStr就是解析失败。最后发现手动输入的空格ASCII编码为30,而参数中的空格编码为160。

这个ASCII编码为160的空格,其实是不间断空格(non-breaking space),就是页面上的&nbsp:所产生的空格。不间断空格 non-breaking space的缩写正是nbsp;。这种空格的作用就是在页面换行时不被打断。

2、处理办法

不间断空格无法被trim()所裁剪,也无法被正则表达式的\s所匹配,也无法被Stringutils.isBlank()所识别,无法像裁剪寻常空格那样移除这个不间断空格。我们可以利用不间断空格的Unicode编码来移除它,其编码为\u00A0,正常空格编码为\u0020

String str = "a\u00A0b\u00A0c";
str = str.replaceAll("\u00A0", "\u0020");
// 或者
str = str.replaceAll("\\u00A0+", "\u0020"); // 正则表达式写法

另外,附上ASCII 0~255的编码表

摘自: https://blog.csdn.net/hhy321/article/details/120610891

3、ASCII码的中文表格

前128个称为基本ASCII码,从二进制角度来看,它们的最高位bit[7]=0,只使用了低7位bit[6,0]来进行编码。


3.1 ASCII基本字符,0 - 127,共128个。

ASCII码

字符
16进制10进制2进制
0x00000000000NUL 空
0x01100000001SOH 标题开始
0x02200000010STX 正文开始
0x03300000011ETX 正文结束
0x04400000100EOT 传输结束
0x05500000101ENQ 询问字符
0x06600000110ACK 承认
0x07700000111BEL 报警
0x08800001000BS 退一格
0x09900001001HT 横向制表
0x0A1000001010LF 换行
0x0B1100001011VT 垂直制表
0x0C1200001100FF 走纸控制
0x0D1300001101CR 回车
0x0E1400001110SO 移位输出
0x0F1500001111SI 移位输入
0x101600010000DLE 数据链路转义
0x111700010001DC1 设备控制1
0x121800010010DC2 设备控制2
0x131900010011DC3 设备控制3
0x142000010100DC4 设备控制4
0x152100010101NAK 否定
0x162200010110SYN 空转同步
0x172300010111ETB 信息组传送结束
0x182400011000CAN 作废
0x192500011001EM 纸尽
0x1A2600011010SUB 换置
0x1B2700011011ESC 换码
0x1C2800011100FS 文字分隔符
0x1D2900011101GS 组分隔符
0x1E3000011110RS 记录分隔符
0x1F3100011111US 单元分隔符
0x203200100000(space)
0x213300100001
0x223400100010
0x233500100011#
0x243600100100$
0x253700100101%
0x263800100110&
0x273900100111'
0x284000101000(
0x294100101001)
0x2A4200101010*
0x2B4300101011+
0x2C4400101100,
0x2D4500101101-
0x2E4600101110.
0x2F4700101111/
0x3048001100000
0x3149001100011
0x3250001100102
0x3351001100113
0x3452001101004
0x3553001101015
3654001101106
0x3755001101117
0x3856001110008
0x3957001110019
0x3A5800111010:
0x3B5900111011;
0x3C6000111100<
0x3D6100111101=
0x3E6200111110>
0x3F6300111111?
0x406401000000@
0x416501000001A
0x426601000010B
0x436701000011C
0x446801000100D
0x456901000101E
0x467001000110F
0x477101000111G
0x487201001000H
0x497301001001I
0x4A7401001010J
0x4B7501001011K
0x4C7601001100L
0x4D7701001101M
0x4E7801001110N
0x4F7901001111O
0x508001010000P
0x518101010001Q
0x528201010010R
0x538301010011S
0x548401010100T
0x558501010101U
0x568601010110V
0x578701010111W
0x588801011000X
0x598901011001Y
0x5A9001011010Z
0x5B9101011011[
0x5C9201011100\
0x5D9301011101]
0x5E9401011110^
0x5F9501011111_
0x609601100000`
0x619701100001a
0x629801100010b
0x639901100011c
0x6410001100100d
0x6510101100101e
0x6610201100110f
0x6710301100111g
0x6810401101000h
0x6910501101001i
0x6A10601101010j
0x6B10701101011k
0x6C10801101100l
0x6D10901101101m
0x6E11001101110n
0x6F11101101111o
0x7011201110000p
0x7111301110001q
0x7211401110010r
0x7311501110011s
0x7411601110100t
0x7511701110101u
0x7611801110110v
0x7711901110111w
0x7812001111000x
0x7912101111001y
0x7A12201111010z
0x7B12301111011{
0x7C12401111100|
0x7D12501111101}
0x7E12601111110~
0x7F12701111111DEL 删除

3.2 ASCII控制字符 ,0 - 31,共32个。


0~31 之间的ASCII码常用于控制像打印机一样的外围设备。

十进制
DEC
八进制
OCT
十六进制
HEX
二进制
BIN
符号
Symbol
HTML
实体编码
中文解释
Description
00000000000000NUL&#000;空字符
10010100000001SOH&#001;标题开始
20020200000010STX&#002;正文开始
30030300000011ETX&#003;正文结束
40040400000100EOT&#004;传输结束
50050500000101ENQ&#005;询问
60060600000110ACK&#006;收到通知
70070700000111BEL&#007;
80100800001000BS&#008;退格
90110900001001HT&#009;水平制表符
100120A00001010LF&#010;换行键
110130B00001011VT&#011;垂直制表符
120140C00001100FF&#012;换页键
130150D00001101CR&#013;回车键
140160E00001110SO&#014;移出
150170F00001111SI&#015;移入
160201000010000DLE&#016;数据链路转义
170211100010001DC1&#017;设备控制 1
180221200010010DC2&#018;设备控制 2
190231300010011DC3&#019;设备控制 3
200241400010100DC4&#020;设备控制 4
210251500010101NAK&#021;拒绝接收
220261600010110SYN&#022;同步空闲
230271700010111ETB&#023;传输块结束
240301800011000CAN&#024;取消
250311900011001EM&#025;介质中断
260321A00011010SUB&#026;替换
270331B00011011ESC&#027;换码符
280341C00011100FS&#028;文件分隔符
290351D00011101GS&#029;组分隔符
300361E00011110RS&#030;记录分离符
310371F00011111US&#031;单元分隔符

3.3 ASCII可显示字符 ,32 - 127,共96个。

32~127 之间的ASCII码表示的符号,在我们的键盘上都可以被找到。其中:32表示空格,127表示删除命令。

十进制
DEC
八进制
OCT
十六进制
HEX
二进制
BIN
符号
Symbol
HTML
实体编码
中文解释
Description
320402000100000&#032;空格
330412100100001!&#033;感叹号
340422200100010"&#034;双引号
350432300100011#&#035;井号
360442400100100$&#036;美元符
370452500100101%&#037;百分号
380462600100110&&#038;
390472700100111'&#039;单引号
400502800101000(&#040;左括号
410512900101001)&#041;右括号
420522A00101010*&#042;星号
430532B00101011+&#043;加号
440542C00101100,&#044;逗号
450552D00101101-&#045;连字号或减号
460562E00101110.&#046;句点或小数点
470572F00101111/&#047;斜杠
4806030001100000&#048;0
4906131001100011&#049;1
5006232001100102&#050;2
5106333001100113&#051;3
5206434001101004&#052;4
5306535001101015&#053;5
5406636001101106&#054;6
5506737001101117&#055;7
5607038001110008&#056;8
5707139001110019&#057;9
580723A00111010:&#058;冒号
590733B00111011;&#059;分号
600743C00111100<&#060;小于
610753D00111101=&#061;等号
620763E00111110>&#062;大于
630773F00111111?&#063;问号
641004001000000@&#064;电子邮件符号
651014101000001A&#065;大写字母 A
661024201000010B&#066;大写字母 B
671034301000011C&#067;大写字母 C
681044401000100D&#068;大写字母 D
691054501000101E&#069;大写字母 E
701064601000110F&#070;大写字母 F
711074701000111G&#071;大写字母 G
721104801001000H&#072;大写字母 H
731114901001001I&#073;大写字母 I
741124A01001010J&#074;大写字母 J
751134B01001011K&#075;大写字母 K
761144C01001100L&#076;大写字母 L
771154D01001101M&#077;大写字母 M
781164E01001110N&#078;大写字母 N
791174F01001111O&#079;大写字母 O
801205001010000P&#080;大写字母 P
811215101010001Q&#081;大写字母 Q
821225201010010R&#082;大写字母 R
831235301010011S&#083;大写字母 S
841245401010100T&#084;大写字母 T
851255501010101U&#085;大写字母 U
861265601010110V&#086;大写字母 V
871275701010111W&#087大写字母 W
881305801011000X&#088;大写字母 X
891315901011001Y&#089;大写字母 Y
901325A01011010Z&#090;大写字母 Z
911335B01011011[&#091;左中括号
921345C01011100\&#092;反斜杠
931355D01011101]&#093;右中括号
941365E01011110^&#094;音调符号
951375F01011111_&#095;下划线
961406001100000`&#096;重音符
971416101100001a&#097;小写字母 a
981426201100010b&#098;小写字母 b
991436301100011c&#099;小写字母 c
1001446401100100d&#100;小写字母 d
1011456501100101e&#101;小写字母 e
1021466601100110f&#102;小写字母 f
1031476701100111g&#103;小写字母 g
1041506801101000h&#104;小写字母 h
1051516901101001i&#105;小写字母 i
1061526A01101010j&#106;小写字母 j
1071536B01101011k&#107;小写字母 k
1081546C01101100l&#108;小写字母 l
1091556D01101101m&#109;小写字母 m
1101566E01101110n&#110;小写字母 n
1111576F01101111o&#111;小写字母 o
1121607001110000p&#112;小写字母 p
1131617101110001q&#113;小写字母 q
1141627201110010r&#114;小写字母 r
1151637301110011s&#115;小写字母 s
1161647401110100t&#116;小写字母 t
1171657501110101u&#117;小写字母 u
1181667601110110v&#118;小写字母 v
1191677701110111w&#119;小写字母 w
1201707801111000x&#120;小写字母 x
1211717901111001y&#121;小写字母 y
1221727A01111010z&#122;小写字母 z
1231737B01111011{ &#123;左大括号
1241747C01111100|&#124;垂直线
1251757D01111101}&#125;右大括号
1261767E01111110~&#126;波浪号
1271777F01111111&#127;删除

3.4 ASCII扩展字符,128 - 255,共128个。

后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。

十进制
DEC
八进制
OCT
十六进制
HEX
二进制
BIN
符号
Symbol
HTML
实体编码
中文解释
Description
1282008010000000&#128;欧盟符号
1292018110000001
1302028210000010&#130;单低 9 引号
1312038310000011ƒ&#131;带钩的
拉丁小写字母f
1322048410000100&#132;双低 9 引号
1332058510000101&#133;水平省略号
1342068610000110&#134;剑号
1352078710000111&#135;双剑号
1362108810001000ˆ&#136;修正字符
抑扬音符号
1372118910001001&#137;千分号
1382128A10001010Š&#138;带弯音号的
拉丁大写字母 S
1392138B10001011&#139;左单书名号
1402148C10001100Œ&#140;拉丁大写组合 OE
1412158D10001101
1422168E10001110Ž&#142;带弯音号的
拉丁大写字母 z
1432178F10001111
1442209010010000
1452219110010001&#145;左单引号
1462229210010010&#146;右单引号
1472239310010011&#147;左双引号
1482249410010100&#148;右双引号
1492259510010101&#149;
1502269610010110&#150;半长破折号
1512279710010111&#151;全长破折号
1522309810011000˜&#152;小波浪线
1532319910011001&#153;
1542329A10011010š&#154;带弯音号的
拉丁小写字母 s
1552339B10011011&#155;右单书名号
1562349C10011100œ&#156;拉丁小写组合 oe
1572359D10011101
1582369E10011110ž&#158;带弯音号的
拉丁小写字母 z
1592379F10011111Ÿ&#159;带弯音号的
拉丁大写字母 Y
160240A010100000&#160;
161241A110100001¡&#161;反向感叹号
162242A210100010¢&#162;分币符号
163243A310100011£&#163;英磅符号
164244A410100100¤&#164;
165245A510100101¥&#165;人民币符号
166246A610100110¦&#166;
167247A710100111§&#167;章节符号
168250A810101000¨&#168;通用货币符号
169251A910101001©&#169;版权符号
170252AA10101010ª&#170;阴性顺序
指示符号
171253AB10101011«&#171;左角引号
172254AC10101100¬&#172;
173255AD10101101­&#173;
174256AE10101110®&#174;
175257AF10101111¯&#175;
176260B010110000°&#176;温度符号
177261B110110001±&#177;加/减号
178262B210110010²&#178;上标 2
179263B310110011³&#179;上标 3
180264B410110100´&#180;
181265B510110101µ&#181;微符号
182266B610110110&#182;段落符号,
pilcrow
183267B710110111·&#183;中点
184270B810111000¸&#184;
185271B910111001¹&#185;上标 1
186272BA10111010º&#186;阳性顺序
指示符
187273BB10111011»&#187;右角引号
188274BC10111100¼&#188;分数四分之一
189275BD10111101½&#189;分数二分之一
190276BE10111110¾&#190;
191277BF10111111¿&#191;反向问号
192300C011000000À&#192;带重音符
的大写字母 A
193301C111000001Á&#193;带尖锐重音
的大写字母 A
194302C211000010Â&#194;带音调符号
的大写字母 A
195303C311000011Ã&#195;带代字号
的大写字母 A
196304C411000100Ä&#196;带元音变音
(分音符号)
的大写字母 A
197305C511000101Å&#197;带铃声
的大写字母 A
198306C611000110Æ&#198;大写字母 AE
双重元音
199307C711000111Ç&#199;带变音符号
的大写字母 C
200310C811001000È&#200;带重音符
的大写字母 E
201311C911001001É&#201;带尖锐重音
的大写字母 E
202312CA11001010Ê&#202;带音调符号
的大写字母 E
203313CB11001011Ë&#203;带元音变音
(分音符号)
的大写字母 E
204314CC11001100Ì&#204;带重音符
的大写字母 I
205315CD11001101Í&#205;带尖锐重音
的大写字母 I
206316CE11001110Î&#206;带音调符号
的大写字母 I
207317CF11001111Ï&#207;带元音变音
(分音符号)
的大写字母 I
208320D011010000Ð&#208;
209321D111010001Ñ&#209;带代字号
的大写字母 N
210322D211010010Ò&#210;带重音符
的大写字母 O
211323D311010011Ó&#211;带尖锐重音
的大写字母 O
212324D411010100Ô&#212;带音调符号
的大写字母 O
213325D511010101Õ&#213;带代字号
的大写字母 O
214326D611010110Ö&#214;带元音变音
(分音符号)
的大写字母 O
215327D711010111×&#215;大写字母
OE 连字
216330D811011000Ø&#216;带斜杠
的大写字母 O
217331D911011001Ù&#217;带重音符
的大写字母 U
218332DA11011010Ú&#218;带尖锐重音
的大写字母 U
219333DB11011011Û&#219;带音调符号
的大写字母 U
220334DC11011100Ü&#220;带元音变音
(分音符号)
的大写字母 U
221335DD11011101Ý&#221;带元音变音
(分音符号)
的大写字母 Y
222336DE11011110Þ&#222;
223337DF11011111ß&#223;德语高调
小写字母 s
224340E011100000à&#224;带重音符
的小写字母 a
225341E111100001á&#225;带尖锐重音
的小写字母 a
226342E211100010â&#226;带音调符号
的小写字母 a
227343E311100011ã&#227;带代字号
的小写字母 a
228344E411100100ä&#228;带元音变音
(分音符号)
的小写字母 a
229345E511100101å&#229;带铃声的
小写字母 a
230346E611100110æ&#230;小写字母 ae
双重元音
231347E711100111ç&#231;带变音符号
的小写字母 c
232350E811101000è&#232;带重音符
的小写字母 e
233351E911101001é&#233;带尖锐重音
的小写字母 e
234352EA11101010ê&#234;带音调符号
的小写字母 e
235353EB11101011ë&#235;带元音变音
(分音符号)
的小写字母 e
236354EC11101100ì&#236;带重音符
的小写字母 i
237355ED11101101í&#237;带尖锐重音
的小写字母 i
238356EE11101110î&#238;带音调符号
的小写字母 i
239357EF11101111ï&#239;带元音变音
(分音符号)
的小写字母 i
240360F011110000ð&#240;
241361F111110001ñ&#241;带代字号
的小写字母 n
242362F211110010ò&#242;带重音符
的小写字母 o
243363F311110011ó&#243;带尖锐重音
的小写字母 o
244364F411110100ô&#244;带音调符号
的小写字母 o
245365F511110101õ&#245;带代字号
的小写字母 o
246366F611110110ö&#246;带元音变音
(分音符号)
的小写字母 o
247367F711110111÷&#247;小写字母 oe
连字
248370F811111000ø&#248;带斜杠
的小写字母 o
249371F911111001ù&#249;带重音符
的小写字母 u
250372FA11111010ú&#250;带尖锐重音
的小写字母 u
251373FB11111011û&#251;带音调符号
的小写字母 u
252374FC11111100ü&#252;带元音变音
(分音符号)
的小写字母 u
253375FD11111101ý&#253;带元音变音
(分音符号)
的小写字母 y2
254376FE11111110þ&#254;
255377FF11111111ÿ&#255;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值