gpt4 book ai didi

python - 字符\u260e

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:47 25 4
gpt4 key购买 nike

在网络抓取过程中,我得到了 unicode 中的字符\u260e。我的输出是“The Last Resort, ’ +977 1 4700525”。因此,应该使用 ☎ 而不是 â∼。

我怎样才能把它弄回电话标志(☎)?所以输出将是“The Last Resort, ☎ +977 1 4700525”。

克里斯

最佳答案

当您抓取一个网站时,Python 识别出一个“☎”字符并将其存储在一个字符串中。

此字符的代码点为 260e。然而,当字符被存储时,它们被存储为一个或多个字节的序列。这些字节是什么取决于所使用的编码。在您的情况下,可能使用了 UTF-8。

此字符的 UTF-8 编码为 E2 98 8E(参见 http://www.fileformat.info/info/unicode/char/260e/index.htm)。

现在你有了一个代表你角色的字节序列。你打算用它做什么?你要把它输出到某个地方。但是您将这个字节串转换成字符,所以您必须指定一种编码。假设您指定编码 Windows-1252(请参阅 http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT)。

  • E2 是 â
  • 98 是〜
  • 8E 是 Ž

这就是你所看到的。您需要以 UTF-8 格式写出 Python 字符串。或者,如果您正在编写 HTML,请使用 DruvPathak 关于使用 HTML 字符实体引用的建议,在这种情况下

☎

☎

我怀疑发生的事情是您在写出字符串时没有指定编码,而 Windows-1252 是默认编码。或者,也许您的浏览器默认设置为显示 Windows-1252。

在 HTML 中发送数据的一个有趣的事情是,您可以发送一个 UTF-8 字节流,将 HTTP 内容类型设置为 UTF-8,并在您的 HTML 文档中放置元标记,说明页面编码为UTF-8,但如果最终用户使用的浏览器允许他或她覆盖服务器发送的编码,我想,最终用户有可能会错误地看到数据。

如果您使用字符实体引用,浏览器将始终正确显示它。

不过,在任何地方都使用这些实体引用可能不方便。现在大多数人不会手动设置他们的浏览器来覆盖服务器发送的编码。

附录

假设您有一个 unicode 字符串,并且您想要生成一个包含 HTML 字符实体引用的常规(非 unicode)字符串(类型 str)。这是一个完整的示例脚本,它说明了一种直接但不一定是最 Pythonic 的方法:

def to_character_entity_reference_string(s):
return "".join(["&#" + str(ord(c)) + ";" for c in s])

print(to_character_entity_reference_string(u'काठमाण्डु'))

如果你运行这个脚本,你会得到输出

काठमाण्डु

您可以将该输出放入一个文件中并在 Web 浏览器中打开它,您将看到 काठमाण्डु 按预期显示。

您可以在此基础脚本上创建变体,以便保留代码点小于 128 的字符,而其他所有内容都成为字符实体引用。您可能还想探索 Python 的 encodedecode 函数。再一次,字符实体引用可防止人们手动更改浏览器设置以覆盖您的编码,这当然很好,但可能被认为是矫枉过正。可以说,弄乱这些设置的最终用户得到了他们应得的东西,因此通常可以接受将所有内容设置为仅以 UTF-8 编码的方式。不过,很高兴了解字符实体引用。

关于python - 字符\u260e,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7266842/

25 4 0