今天笔者修改一台windows Server服务器的C:\Windows\System32\drivers\etc\hosts文件
新添加了几条记录-(当然不是手打,也是从其他地方复制过去的),如下:
172.16.1.211 ssm.cn-north-1.amazonaws.com.cn 172.16.1.212 ssmmessages.cn-north-1.amazonaws.com.cn 172.16.1.213 ec2messages.cn-north-1.amazonaws.com.cn
但添加后,在cmd中使用ping命令测试,却总还是解析到了公有IP上,也就是说根据dns进行解析的,根本没有读hosts文件解析
C:\Users\qq5201351>ping -n 2 ssm.cn-north-1.amazonaws.com.cn Pinging ssm.cn-north-1.amazonaws.com.cn [54.222.20.96] with 32 bytes of data: Reply from 54.222.20.96: bytes=32 time=33ms TTL=238 Reply from 54.222.20.96: bytes=32 time=36ms TTL=238 Ping statistics for 54.222.20.96: Packets: Sent = 2, Received = 2, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 33ms, Maximum = 36ms, Average = 34ms C:\Users\qq5201351>
那就有点奇怪了,按理说对于域名解析,本地hosts的优先级会高于dns的呢、怀疑有缓存
于是使用ipconfig /flushdns清除dns缓存后,效果依然一样
又静下来想了一下,难道复制后,有特殊字符,于是看了一下中间两个空格的十六进编码0Xc2a0
去UTF-8 encoding table and Unicode characters中看了一下、这两个组合在一起即是utf-8中特殊的NO-BREAK SPACE
翻译过来就是非中断空格,看来这种特殊的空格影响到了windows对hosts条目的读取,于是改成标准的0X20空格
也就是正常的敲几个空格即可,最后再次解析,果然正常的先读取了hosts中的条目~
最后总结一下:如果遇到上面的问题,可以通过如下方法快否的定位和解决
1、直接删除空格,手工输入1个或者多个空格
2、可以将文本复制到notepad++中,然后显示全部字符,正常的空格会显示成一个点. 如果是0xC2A0则依然会显示成空格
3、可以通过xxd或者其他notepad++下的HexEditor进行进行十六进制编码查看
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/16732270.html