将 UTF-8 编码误当作 GBK 编码处理后的解决办法

变化情况

原始UTF-8编码文字:全体 (字节流为:e585a8 e4bd93,三个字节为一个字)
被当作 GBK 编码拆分,GBK编码为单个字两个字节,所以变为3个字:鍏ㄤ綋(e585 a8e4 bd93)
验证方法:python3:b'\xe5\x85'.decode('GBK') 输出为 '鍏'

当程序将 鍏ㄤ綋(e585 a8e4 bd93) 以 asci 方式保存的情况下,本地文件会忠实的保存 \xe5\x85\xa8\xe4\xbd\x93 序列,然后在再次打开的时候识别为 UTF-8 编码,从而显示正确的内容。

当将 鍏ㄤ綋(e585 a8e4 bd93) 复制到一个 UTF-8 编码的终端时,其实际内容会查 UTF-8 表变为:鍏ㄤ綋('\u934f\u3124\u7d8b' 或者 '\xe9\x8d\x8f\xe3\x84\xa4\xe7\xb6\x8b')
这种情况下,要变回原来序列的话,需要将每个字从 UTF-8 的 3 字节编码变为 2 个字节的 GBK 编码,即 encode('GBK')。然后以 UTF-8 编码的方式去解读,即 decode('utf-8')
代码为:'鍏ㄤ綋'.encode('GBK').decode('UTF-8')

你可能感兴趣的:(将 UTF-8 编码误当作 GBK 编码处理后的解决办法)