我希望将 URL 存储在数据库(本例中为 MySQL)中并在 Python 中处理它。尽管数据库和编程语言可能与我的问题不太相关。
在我的设置中,当查询数据库中的文本字段时,我收到 unicode 字符串。但 URL 实际上是文本吗?从 unicode 进行编码和解码是应该对 URL 执行的操作吗?或者将数据库中的列设置为二进制 blob 更好?
那么,你是如何处理这个问题的呢?
澄清: 这个问题不是关于用百分比表示法对非 ASCII 字符进行 urlencode 的。这是关于 unicode 表示文本和字节字符串表示将此文本编码为字节序列的方法的区别。在 Python(3.0 之前)中,这种区别在于 unicode 和 str 类型之间。在 MySQL 中,它是 TEXT 到 BLOBS。因此,编程语言和数据库之间的概念似乎是对应的。但是在此方案中处理 URL 的最佳方法是什么?
最佳答案
相关答案可以在RFC 2396中找到, 部分 2.1 URI 和非 ASCII 字符
URI和字符之间的关系一直是 不属于 US-ASCII 的字符会造成混淆。来描述 的关系,区分“字符”是有用的 (作为可区分的语义实体)和“八位字节”(一个 8 位 字节)。有两种映射,一种是从 URI 字符到八位字节,另一种是从 URI 字符到八位字节的映射 从八位位组到原始字符的一秒:
URI字符序列->八位字节序列->原始字符序列
URI 表示为字符序列,而不是序列 八位位组。这是因为 URI 可能通过以下方式“传输” 不是通过计算机网络,例如打印在纸上、阅读 radio 等
关于python - URL : Binary Blob, Unicode 或编码的 Unicode 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/416315/