libguess的python包装器,用于确定字符串的字符编码的库。
python-libguess的Python项目详细描述
libguess允许找出某些文本的编码方式 给定的语言。这个库对于短文本字符串特别有用 它们本身不携带可靠的编码信息,比如id3标签 在MP3文件中。例如,我们可以在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.
功能
确定编码(在字符串、区域中)
确定给定语言区域的字符串编码。
参数:
in_string–需要猜测编码的原始字节字符串。
region–猜测编码的REGION_*常量之一。
返回:
字符串值,指示给定区域或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'
此函数的输出字符串可以直接给出 to 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()调用因任何其他原因失败, 不返回任何值:
>>> encoding = guess.determine_encoding("asdf", "UNKNOWN") >>> encoding is None True
对区域名使用REGION_*常量。
验证utf8(在字符串中)
检查给定字符串是否为有效的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='阿拉伯语'
REGION_BL='波罗的海'
REGION_CN='中文'
REGION_GR='希腊语'
REGION_HW='希伯来语'
REGION_JP='日语'
REGION_KR='朝鲜语'
REGION_PL=“波兰语”
REGION_RU='俄语'
REGION_TR='土耳其语'
REGION_TW='台湾人'