搜索

查看: 3142|回复: 11

[Python] Python实现模拟锟斤拷等各类乱码详解

[复制链接]
发表于 2023-5-4 17:22:04 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:22:04 3142 11 看全部
目录
  • 锟拷码和口字码
  • 古文码与问句码
  • 符号码和拼音码
  • 总结
    锟拷码和口字码
    说到乱码问题就不得不提到锟斤拷,这算是非常常见的一种乱码形式,那么它到底是经过何种错误操作产生的呢?下面我们一步步探究。
    看一个基本示例:
    "��".encode("u8").decode("gbk")

    '锟斤拷'

    我们将�字符以UTF-8编码后,以GBK编码解码就可以得到 锟斤拷 的乱码。
    那么为什么 锟斤拷 为什么如此常见呢?这是因为大部分编程语言在使用UNICODE系列的编码去解码时,会将不识别的字节编码为0xFFFD(65533)即�字符表示未知字符进行占位:
    "\uFFFD"

    '�'

    注意:UNICODE系列包括UTF-8、UTF-16、UTF-32编码,一般UNICODE编码指UTF-16编码。在python中unicode_escape编码表示UNICODE编码的的转义形式:
    "\uFFFD".encode("unicode_escape").decode()
    '\\ufffd'
    对于Python,默认情况下解码碰到未知字符时会直接抛出异常,但是如果设置errors参数为replace时,则会将未知字符解码为�占位。
    将汉字用GBK编码:
    "小小明".encode("gbk")
    b'\xd0\xa1\xd0\xa1\xc3\xf7'

    将上述编码结果用UTF-8编码解码,并设置为替换模式:
    "小小明".encode("gbk").decode("u8", "replace")
    'СС��'

    0xd0a1被解码成С,但是0xc3和0xf7无法被UTF-8编码识别,只能用占位符�替换,于是就得到了上面的结果。
    此时我们再编码并解码:
    "小小明".encode("gbk").decode("u8", "replace") \
        .encode("u8").decode("gbk", "replace")
    '小小锟斤拷'

    这是因为�被编码成了0xEFBFBD
    "��".encode("u8")
    b'\xef\xbf\xbd\xef\xbf\xbd'

    而0xEFBFBDEFBFBD被GBK解码时,正好就是锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。
    上述以�为主的乱码字符就是口字码,原因是以UTF-8编码读取了GBK编码的中文。
    而锟拷体则是大部分都是锟斤拷的全中文字符,原因是用GBK编码读取了UTF-8编码的口字码中文。

    古文码与问句码
    问句码产生的核心原因在于GBK对于无法编码的字符会使用?填充:
    "�
  • 回复

    使用道具 举报

    发表于 2023-6-30 01:04:47 | 显示全部楼层
    123456865 2023-6-30 01:04:47 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-30 16:39:18 | 显示全部楼层
    当当当当裤裆坦 2023-6-30 16:39:18 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-6-30 21:47:33 | 显示全部楼层
    贺老师 2023-6-30 21:47:33 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    回复

    使用道具 举报

    发表于 2023-7-3 17:28:41 | 显示全部楼层
    123456848 2023-7-3 17:28:41 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-7-3 21:38:01 | 显示全部楼层
    哈哈SE7 2023-7-3 21:38:01 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-7-4 07:16:07 | 显示全部楼层
    心随674 2023-7-4 07:16:07 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-7-4 13:07:49 | 显示全部楼层
    丁侦球 2023-7-4 13:07:49 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-4 22:39:10 | 显示全部楼层
    123456823 2023-7-4 22:39:10 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-7-4 23:04:13 | 显示全部楼层
    十二音阶囤 2023-7-4 23:04:13 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表