【问题标题】:Django Latin Characters do not workDjango 拉丁字符不起作用
【发布时间】:2023-04-07 06:00:03
【问题描述】:

我正在尝试在导入 CSV 文件时解决此问题。我尝试保存一个包含 latin-1 字符的字符串变量,当我尝试打印它们时,它会将其更改为编码。我能做些什么来保持编码吗?我只是想让角色保持原样,别无其他。

这是问题所在(从 Django 的管理 shell 中可以看出

>>> variable = "{'job_title': 'préventeur'}"
>>> variable
"{'job_title': 'pr\xc3\xa9venteur'}"

为什么 Django 或 Python 会自动更改字符串?我是否必须更改字符集或其他内容?

任何事情都会有所帮助。谢谢!

【问题讨论】:

    标签: python django encoding decoding latin1


    【解决方案1】:

    您的终端正在输入编码字符;您使用的是 UTF-8,因此当您键入 é 时,Python 会收到 两个字节

    在这种情况下从 UTF-8 解码:

    >>> print 'pr\xc3\xa9venteur'.decode('utf8')
    préventeur
    

    不过,您真的很想了解 Python 和 Unicode:

    【讨论】:

      【解决方案2】:
      "{'job_title': 'pr\xc3\xa9venteur'}"
      

      字符已为您编码为 UTF-8,这非常好,因为如果您重视自己的理智,您不想坚持使用 Latin-1。转换为 Unicode 以获得最佳效果:

      >>> '\xc3\xa9'.decode('UTF-8')
      u'é'
      

      【讨论】:

        【解决方案3】:

        您是否尝试过使用 print 语句代替?

        >>> variable = "{'job_title': 'préventeur'}"
        
        >>> variable
        "{'job_title': 'pr\x82venteur'}"
        
        >>> repr(variable)
        '"{\'job_title\': \'pr\\x82venteur\'}"'
        
        >>> print variable
        {'job_title': 'préventeur'}
        

        【讨论】:

          猜你喜欢
          • 2017-12-10
          • 1970-01-01
          • 1970-01-01
          • 2015-06-26
          • 1970-01-01
          • 1970-01-01
          • 2012-05-02
          • 2018-10-21
          • 1970-01-01
          相关资源
          最近更新 更多