Python封装libguess库,用于确定字符串的字符编码。
项目描述
libguess 允许在给定语言的情况下找到文本的编码。这个库对于短文本字符串特别有用,这些字符串本身不携带可靠的编码信息,如MP3文件中的ID3标签。例如,我们可以将相同的日语字符串编码为3种不同的编码(UTF-8、SHIFT-JIS、EUC-JP),而 libguess 希望仅通过查看给定字符串的前几个字节就能正确猜测编码。
您也可以通过指定区域作为第一个参数,然后是可能的文件目标来将其用作常规命令行程序
Usage: python -m guess REGION [INPUT_FILE] If input file name is not given, this program reads from the standard input.
函数
determine_encoding(in_string, region)
确定给定语言区域的字符串编码。
参数
in_string – 需要猜测编码的原始字节字符串。
region – 用于猜测编码的 REGION_* 常量之一。
返回
指示给定区域in_string参数猜测编码的字符串值,或者在发生错误时返回 None。
作为使用示例,我们可以看到在两种不同的编码下给定的日本文本会发生什么
>>> import guess >>> guess.determine_encoding(u'\u3042'.encode('euc-jp'), guess.REGION_JP) 'EUC-JP' >>> guess.determine_encoding(u'\u3042'.encode('utf-8'), guess.REGION_JP) 'UTF-8'
此函数的输出字符串可以直接传递给 iconv_open() C函数,并且生成的名称应该与 str.decode() 函数的编码字符串兼容
>>> encoded_value = u'\u3042'.encode('shift-jis') >>> encoding = guess.determine_encoding(encoded_value, guess.REGION_JP) >>> encoding 'SJIS' >>> encoded_value.decode(encoding) u'\u3042'
如果给定的区域名称无效或由于任何其他原因导致 libguess_determine_encoding() 调用失败,则返回 None值
>>> encoding = guess.determine_encoding("asdf", "UNKNOWN") >>> encoding is None True
对于区域名称,请使用 REGION_* 常量。
validate_utf8(in_string)
检查给定的字符串是否为有效的UTF-8字节序列。
参数
in_string – 要检查UTF-8有效性的原始字节字符串。
返回值
True 如果给定字符串是有效的UTF-8字节序列,否则为 False。
此函数包含在此处是为了与libguess接口的完整性。它在UTF-8有效性方面比glib中的某些函数给出更精确的结果。
>>> import guess >>> guess.validate_utf8(u'\u3042'.encode('EUC-JP')) False >>> guess.validate_utf8(u'\u3042'.encode('UTF-8')) True
区域名称
REGION_AR = ‘arabic’
REGION_BL = ‘baltic’
REGION_CN = ‘chinese’
REGION_GR = ‘greek’
REGION_HW = ‘hebrew’
REGION_JP = ‘japanese’
REGION_KR = ‘korean’
REGION_PL = ‘polish’
REGION_RU = ‘russian’
REGION_TR = ‘turkish’
REGION_TW = ‘taiwanese’
项目详情
关闭
python-libguess-1.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4359f6eb30782d9f27dde37eafc9520c5b1be97184664b61278ae786a0c6bed9 |
|
MD5 | 622f6f8a094b30e156b27d9d4faa0c19 |
|
BLAKE2b-256 | 5a9c6881c04d966afde868871ed5673bcb8d4bd2b129d88217800d61317661c9 |