我不想检查 Python 中的字符串是否为 ASCII。:)
HTTP 规范中有一个有趣的要求,我想知道如何实现和测试它。
接收者必须将 HTTP 消息解析为编码为 US-ASCII [USASCII] 超集的八位字节序列。
由于字符串处理库处理包含八位字节 LF (%x0A) 的无效多字节字符序列的方式不同,将 HTTP 消息解析为 Unicode 字符流而不考虑特定编码会产生安全漏洞。
在另一个stackoverflow 答案中,有一个字符集示例,它不是 US-ASCII 的超集。但我对测试该要求更感兴趣。或一种测试。这个要求只是意味着解析器必须选择一个 ASCII 的超集来吞下数据,但我想知道你是否想在之前检查消息中是否有任何奇怪的字符。
让我们说一个消息MSG
。
def is_ascii_superset(self, MSG):
"take any string, and return True or False"
# Test here
if test(MSG):
return True
else:
return False
如果有所有作为 ASCII 超集的字符集的列表,有什么想法吗?
更新:
人们似乎误解了这个问题。我不是在谈论查找字符串是否是 ASCII 的一部分。这是微不足道的。
- ISO-8859-1、UTF-8 等是ASCII的超集。
- JIS X 0208不是ASCII 的超集。