当前位置: 首页 > 面试题库 >

如何检测字符串字节编码?

李昌勋
2023-03-14
问题内容

我读取了大约1000个文件名os.listdir(),其中一些文件以UTF8编码,而某些文件为CP1252。

我想将它们全部解码为Unicode,以便在脚本中进行进一步处理。有没有一种方法可以使源编码正确解码为Unicode?

例:

for item in os.listdir(rootPath):

    #Convert to Unicode
    if isinstance(item, str):
        item = item.decode('cp1252')  # or item = item.decode('utf-8')
    print item

问题答案:

如果您的文件位于cp1252和中utf-8,则有一种简单的方法。

import logging
def force_decode(string, codecs=['utf8', 'cp1252']):
    for i in codecs:
        try:
            return string.decode(i)
        except UnicodeDecodeError:
            pass

    logging.warn("cannot decode url %s" % ([string]))

for item in os.listdir(rootPath):
    #Convert to Unicode
    if isinstance(item, str):
        item = force_decode(item)
    print item

否则,有一个字符集检测库。

Python-检测字符集并转换为utf-8

https://pypi.python.org/pypi/chardet



 类似资料:
  • 如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?

  • 问题内容: 假设我有一个包含Ü的字符串。我将如何找到所有这些unicode字符?我应该测试他们的代码吗?我该怎么做? 例如,给定字符串“AÜXÜ”,我想将其转换为“ AYXY”。我想对其他unicode字符执行相同的操作,并且我不希望将它们存储在某种翻译图中。 问题答案: “ unicode字符”的定义含糊不清,但是将被视为表示标准ISO 8859字符集 未涵盖的UTF-8 字符。如果您的情况是这

  • 问题内容: 如果我有一个PHP字符串,如何有效地确定它是否至少包含一个非ASCII字符?所谓非ASCII字符,是指不属于此表的任何字符,http://www.asciitable.com/,其位置为32-126(含)。 因此,它不仅必须是ASCII表的一部分,而且还必须是可打印的。我想检测一个包含至少一个不符合这些规范的字符的字符串(不可打印的ASCII字符或完全不同的字符,例如不属于该表的Uni

  • 问题内容: 存在无效的字节序列,无法将其转换为Unicode字符串。在Go中转换时如何检测到? 问题答案: 正如Tim Cooper所述,您可以使用来测试UTF-8的有效性。 但!您可能会认为将非UTF-8字节转换为Go 是不可能的。实际上,“在Go中,字符串实际上是只读的字节片段”;它可能包含无效的UTF-8字节,您可以打印这些字节,通过索引访问,甚至往返返回到(例如)。 Go在您的语言中有两个

  • 问题内容: 我正在寻找一种检测文档中字符集的方法。我一直在这里阅读Mozilla字符集检测实现: 通用字符集检测 我还找到了一个名为jCharDet的Java实现: JCharDet 这两个都是基于使用一组静态数据进行的研究。我想知道的是,是否有人成功使用了其他实现?您是否采用了自己的方法,如果是的话,您用来检测字符集的算法是什么? 任何帮助,将不胜感激。我既不是通过Google寻找现有方法的清单

  • 你能帮我检查任何替代代码来检查我的输入字符串是否已编码?