【问题标题】:Display Japanese characters in Visual Studio Code using Python使用 Python 在 Visual Studio Code 中显示日语字符
【发布时间】:2021-01-06 19:43:12
【问题描述】:

根据this older answer,Python 3 字符串默认兼容 UTF-8。但是在我使用 BeautifulSoup 的网络爬虫中,当我尝试打印或显示 URL 时,日语字符显示为“%E3%81%82”或“%E3%81%B3”,而不是实际字符。

This Japanese website 是我从中收集信息的那个,更具体地说,是与可点击字母按钮中的链接相对应的 URL。例如,当您将鼠标悬停在 あa 上时,您的浏览器会显示您将要点击的链接是 https://kokugo.jitenon.jp/cat/gojuon.php?word=あ。然而,使用 BeautifulSoup 提取链接的["href"] 属性,我得到https://kokugo.jitenon.jp/cat/gojuon.php?word=%E3%81%82

两个版本都链接到同一个网页,但为了调试,我想知道是否可以确保显示的字符串包含实际的日文字符。如果没有,我该如何转换字符串以适应这个目的?

【问题讨论】:

  • 作为临时解决方法,我制作了一个字典,其中键是混乱的字符表示(带有百分号),值是对应的日文字符。

标签: python python-3.x beautifulsoup utf-8


【解决方案1】:

它叫Percent-encoding

百分比编码,也称为URL编码,是一种在Uniform Resource Identifier(URI)中编码任意数据的方法 仅使用 URI 中合法的有限 US-ASCII 字符。

urllib.parse module 应用unquote method

urllib.parse.unquote(string, encoding='utf-8', errors='replace')

%xx 转义符替换为等效的单字符。这 可选编码和错误参数指定如何解码 将百分比编码的序列转换为 Unicode 字符,由 bytes.decode() 方法。

string 必须是 str3.9 版更改string 参数 支持bytesstr 对象(以前只支持str)。

encoding 默认为'utf-8'errors 默认为 'replace', 表示无效序列被占位符替换。

示例

from urllib.parse import unquote
encodedUrl = 'JapaneseChars%E3%81%82or%E3%81%B3'
decodedUrl = unquote( encodedUrl )
print( decodedUrl )
JapaneseCharsあorび

可以将unquote 方法应用于几乎任何字符串,即使已经解码:

print( unquote(decodedUrl) )
JapaneseCharsあorび

【讨论】:

  • 太棒了,谢谢!作为后续,百分比编码是在从网站上抓取数据时发生,还是在 Python 尝试显示数据时发生?
猜你喜欢
  • 2015-07-20
  • 2018-09-06
  • 2019-09-19
  • 2021-05-13
  • 2016-11-04
  • 2015-08-26
  • 1970-01-01
  • 2018-01-19
  • 2018-09-25
相关资源
最近更新 更多