我试图读取一个文件,但我无法弄清楚字符编码。有迹象表明,我所知道的值在文件中两个字符,和十六进制值是我在十六进制编辑器看到的是如下:什么字符编码具有e作为0xCCA9的口音?
0xCCA9 é
0xCCBB ê
0xCCC1 á
任何想法编码这是什么?
所有英文字符的ASCII文件中的编码。我有类似的文件,如果有任何用处,它们在中欧欧洲中部编码,也许它们被意外编码了一次以上。
编辑:
代码找到映射在Python 2.7:(见上文Esailija的答案)。
find_mappings(...)
是被给定的字符映射的词典的发电机。它遍历所有可用的字符集并生成符合条件的字符集。
import pkgutil
import encodings
def get_encodings():
false_positives = set(["aliases"])
found = set(name for imp, name, ispkg in pkgutil.iter_modules(encodings.__path__) if not ispkg)
found.difference_update(false_positives)
return found
def find_mappings(maps):
encodings = sorted(get_encodings())
for f in encodings:
for g in encodings:
try:
if all([k.decode(f).encode(g) == v for k,v in maps.items()]):
yield (f,g)
except:
# Couldn't encode/decode
pass
for mapping in find_mappings({'\xCC': '\xC3', '\xBB': '\xAA', '\xA9': '\xA9', '\xC1': '\xA1'}):
print(mapping)
斑点。我编写了一个程序来映射每个可用字符集以测试它是否符合这些条件,请参阅我的编辑。原来是mac_roman和latin_1 – bcoughlan