[python]如何判断一个字符串使用的是什么编码?

时间:2023-01-05 22:26:42
如何能够判断字符串使用的是哪一种编码? 
判断其使用的是unicode编码还是gbk编码? 
谢谢! 

7 个解决方案

#1


如此冷清?

#2


有人!
但我不会这个问题

#3


不会,帮你顶一下。不过我记得UNICODE文件的第一个字节是特别的,字符串的话不大清楚。

#4


我没用过其它语言的OS,所以只知道怎样判断中文还是英文的字符串。如果是unicode字符串,用type判断,type(s) == type(u'a'),如果是中文的,可以用unicode(s, 'mbcs')将它转换成unicode的字符串。mbcs表示multi-byte character set,所以我认为不管是日语,韩语还是简体或繁体的中文,它都能自动辨识,毕竟你输入的是当前操作系统默认的编码。

#5


用types模块

#6


to forlovepb:能解释清楚点儿吗?

#7


对于多字节编码的字符串,比如gb2312和big5,这些编码总有重叠的部分,也就是给你一个word值,在gb2312中可以对应一个字符,在big5也同样对应一个字符,当然这两个字符是不同的,因此你根本无法用程序来判断那个编码是你需要的。当然,如果给定字符串足够多的话,那其中总有某个word是某个编码特有的值,可以由此来识别是那种编码。

用过EmEditor这个编辑器的朋友,就应该能体会到这点

#1


如此冷清?

#2


有人!
但我不会这个问题

#3


不会,帮你顶一下。不过我记得UNICODE文件的第一个字节是特别的,字符串的话不大清楚。

#4


我没用过其它语言的OS,所以只知道怎样判断中文还是英文的字符串。如果是unicode字符串,用type判断,type(s) == type(u'a'),如果是中文的,可以用unicode(s, 'mbcs')将它转换成unicode的字符串。mbcs表示multi-byte character set,所以我认为不管是日语,韩语还是简体或繁体的中文,它都能自动辨识,毕竟你输入的是当前操作系统默认的编码。

#5


用types模块

#6


to forlovepb:能解释清楚点儿吗?

#7


对于多字节编码的字符串,比如gb2312和big5,这些编码总有重叠的部分,也就是给你一个word值,在gb2312中可以对应一个字符,在big5也同样对应一个字符,当然这两个字符是不同的,因此你根本无法用程序来判断那个编码是你需要的。当然,如果给定字符串足够多的话,那其中总有某个word是某个编码特有的值,可以由此来识别是那种编码。

用过EmEditor这个编辑器的朋友,就应该能体会到这点