我正在尝试读取文件,但无法弄清楚字符编码。文件中有两个我知道值的字符,我在十六进制编辑器中看到的十六进制值如下:
0xCCA9 é
0xCCBB ê
0xCCC1 á
任何想法这是什么编码?
所有英文字符在文件中都是 ASCII 编码的。如果有任何用处,我有类似的文件在mac中欧编码,也许它们被不小心编码了不止一次。
编辑:
在 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)