【问题标题】:Decoding string to Japanese character in Python在Python中将字符串解码为日文字符
【发布时间】:2020-01-15 02:28:42
【问题描述】:

我正在通过https://github.com/python-amazon-mws/python-amazon-mws 从 MWS 亚马逊获取一份报告。但是该报告在从日本市场获取报告时出现问题,我有一些 SKU 具有日文字符,当我获取和过滤时,我会得到类似的 SKU ライトニングvtz-1843_MG 代替 ライトニングvtz-1843_MG

我认为我在编码/解码方面做错了,请帮忙。

report_data = reportsApi.get_report(report_id=report_id)
response = report_data.original
lines = response.decode("utf-8", "ignore").split("\n")

for line in lines:
    report_data = str(line).split("\t")
    sku = report_data[0].strip()
    print(sku)

【问题讨论】:

  • 这两个字符串看起来一样。日语字符看起来很好。因此,自 90 年代后期以来,几乎所有网站都使用 UTF8,而且日文文本看起来还不错。有什么问题,为什么你认为你需要解码任何东西?如果您在数据库中搜索时遇到问题,则可能是 database 文本被损坏或使用错误编码存储
  • 这些是您需要进行 HTML 解码的 HTML 实体...
  • 如果您始终使用 Unicode,您不必担心语言(在某种程度上)。像 Αυτό Εδώ 这样的日语和希腊语文本在 SO 中看起来都很好的原因是它建立在 .NET 上,其字符串是 Unicode,将数据存储在 nvarchar 字段(即 Unicode)中并将文本返回为 UTF8
  • 好的,在编辑之后很明显这些是 HTML 实体而不是 UTF8 编码的文本。此页面本身表明不需要 HTML 编码

标签: python python-3.x decode encode


【解决方案1】:

对于python 2:

>>> a = 'ライトニングvtz-1843_MG'
>>> from HTMLParser import HTMLParser
>>> HTMLParser().unescape( a )
u'\u30e9\u30a4\u30c8\u30cb\u30f3\u30b0vtz-1843_MG'
>>> print HTMLParser().unescape( a )
ライトニングvtz-1843_MG

对于python 3:

>>> a = 'ライトニングvtz-1843_MG'
>>> import html
>>> html.unescape( a )
'ライトニングvtz-1843_MG'

也许python版本不准确,但我不能在python 2中import html,所以它可能在某个时候发生了变化,不确定在哪里。但在你的情况下,其中一种方法应该有效(或者两者都有效,如果你幸运的话=)

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多