字符看起来像ASCII 63但不是这样我无法删除它

Lou*_*Lou 4 vb.net ascii non-ascii-characters

我正在从文本文件中读取文本.文本文件必须读取的第一个字符串是"Algood",并注意spaaaaaace.在记事本中,似乎这个字符串中有一个spaaaaaace,但事实并非如此.当我在Visual Studio的QuickWatch中测试第6个(从零开始的索引)字符时,它显示为:

"?"c
Run Code Online (Sandbox Code Playgroud)

当我使用该Asc函数获取ASCII码时,它告诉我ASCII码是63. 63是一个问号.但是当我测试以查看字符串是否包含ASCII 63时,它会测试为false.所以看起来字符串包含带有ASCII码63的字符,只有它没有,它包含一些其他字符,它们测试为ASCII码63.这是一个问题:如果我不这样做,我就无法删除该字符知道怎么称呼它.我可以删除最后一个字符,但文本文件中的每个字符串都不包含此字符.

在此输入图像描述

问题是:如果不是问号,这个字符是什么,我怎样才能唯一识别所以我可以删除它?

Han*_*ant 6

它是Unicode替换字符,U + FFFD,又名ChrW(&HFFFD).

永远不要使用Asc()或Chr(),它们是不能处理Unicode的传统VB6函数.将一个奇特的Unicode代码点传递给Asc()总是产生63,字符代码"?"c,又名"我不知道你在说什么".在精确的原理相同"?"c,但使用的ASCII码代替.

看到死亡的黑钻石回来总是坏消息,当字符串从基础字节值转换时出现了问题.因为某些字节值没有产生有效字符.这是你真正应该寻找的,你总是想避免GIGO.Garbage In Garbage Out是一个丑陋的数据损坏问题,没有赢家,只有受害者.您.

  • 服务器端:文本文件=> dbase => Web服务器.客户端:Internet - > browser => text file =>您的应用.您可以轻松添加更多内容,将数据从一种格式转换为另一种格式,让*lot*程序员忙碌. (2认同)