【问题标题】:How to check if a string contain only UTF-8 characters如何检查字符串是否仅包含 UTF-8 字符
【发布时间】:2018-09-03 21:59:24
【问题描述】:

到目前为止,我正在做这样的事情:

def is_utf8(s):
    try:
        x=bytes(s,'utf-8').decode('utf-8', 'strict')
        print(x)
        return 1
    except:
        return 0

唯一的问题是我不想让它打印任何东西,我想删除print(x),当我这样做时,该功能停止正常运行。 例如,如果我这样做:print(is_utf8("H�tst")) 当打印在函数中时它返回 0 否则它打印 1。我是否以错误的方式处理问题

【问题讨论】:

  • 这个问题有点糊涂。如果要检查字符串是否为 utf8 编码,则无需打印字符串。打印字符串的作用是,如果终端的字符集无法处理字符串中的某个字符,则会引发错误。所以你的小功能的结果实际上取决于用户的终端设置。您可能真正想要做的是找出字符串中是否有任何非ascii字符。
  • 什么是sys.stdout.encoding
  • 哦,s 是什么?如果它是一个 python 字符串,那么它总是 utf-8 可编码的。

标签: python string python-3.x encoding utf-8


【解决方案1】:

您可以使用chardet 模块来检测未知编码。例如,如果a 是一个字节数组,那么您可以像这样确定编码:

import chardet

b = chardet.detect(a)
print(b["encoding"])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2011-04-04
    相关资源
    最近更新 更多