作者:Chloemw | 2023-08-29 18:08
如何检测C++字符数组中是否存在扩展ASCII值(128到255).
1> Joachim Saue..:
请记住,没有扩展ASCII这样的东西.ASCII是和仅定义在0到127之间.上面的所有内容都是无效的,或者需要使用除ASCII之外的已定义编码(例如ISO-8859-1).
请阅读绝对最低每个软件开发人员绝对,必须知道关于Unicode和字符集(没有借口!).
除此之外:迭代它并检查任何值> 127(或使用signed char
s 时<0 )有什么问题?
@shoosh:再次阅读您的链接:"该术语的使用有时会受到批评,因为可能会错误地解释ASCII标准已更新为包含超过128个字符或该术语明确标识单个编码,两者都有是不真实的"
-1表示完全错误:http://en.wikipedia.org/wiki/Extended_ASCII
@shoosh:我知道有些编码可以统称为"扩展ASCII",但每当我看到有人使用该术语时,他们通常都不知道这一点.因此,我不鼓励使用它,并试图澄清我在哪里使用它.
@Beau:即使这个定义可以被认为是正确的,但它具有很大的误导性,因为正如你所指出的那样,它并不是指单个编码,而是指一类编码.另外:"扩展ASCII"意味着它是某种ASCII,这是错误的."基于ASCII的编码","ASCII兼容编码"或类似的东西将是更正确的术语.
2> MSalters..:
字符可以是签名或未签名.但这并不重要.您实际上想要检查每个字符是否是有效的ASCII.这是一个积极的,非模棱两可的检查.您只需检查每个char是否> = 0且<= 127.其他任何内容(无论是正数还是负数,"扩展ASCII"或UTF-8)都无效.