V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
muzzy
V2EX  ›  Python

Django 的中文编码问题

  •  1
     
  •   muzzy · 2016-01-04 10:48:54 +08:00 · 3321 次点击
    这是一个创建于 3233 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 html 页面中加上中文,就会报错'utf8' codec can't decode byte 0xd7 in position **: invalid continuation byte 。
    后台的 view.py ,输出 sys.getdefaultencoding()时,已经是 utf-8 。
    Python 用的是 2.7 。
    不知 django 中还有哪些处理会造成编码错误。

    13 条回复    2016-01-05 08:55:48 +08:00
    wuyadong
        1
    wuyadong  
       2016-01-04 11:18:55 +08:00
    setting.py 的 LANGUAGE_CODE = 'zh-cn'?你试试。
    MrEggNoodle
        2
    MrEggNoodle  
       2016-01-04 12:14:34 +08:00
    在 html 页面上加入中文,这个问题好笼统,能否再详细点?
    wph95
        3
    wph95  
       2016-01-04 12:45:45 +08:00
    # -*- coding: utf-8 -*- 加了吗?
    还是老实用 py3 吧 。。。。 彻底杜绝此类问题
    polythene
        4
    polythene  
       2016-01-04 12:46:03 +08:00
    并不是所有编码出错都可以用 utf-8 解决的,看报错信息说“不能用‘ utf8 ’解码 0xd7 in position **”,也就是你的这串字节它不是合法的 utf-8 字节串,可能是 GBK 编码后的字节。

    楼主你把 html 页面的编码改成 utf-8 再试试?
    muzzy
        5
    muzzy  
    OP
       2016-01-04 14:52:33 +08:00
    @polythene html 页面的编码是 utf-8 的,刚刚在 Pycharm 里面把项目编码也改成 u8,也是不行
    muzzy
        6
    muzzy  
    OP
       2016-01-04 14:53:39 +08:00
    @wuyadong 不好用
    HikiJoy
        7
    HikiJoy  
       2016-01-04 15:58:00 +08:00
    提问不是你这么提的,建议去 stackoverflow 学一下,想要得到别人回答需要怎么提问。
    你贴的信息太少了,可能因此就没人能帮你分析。
    都搞不明白你的错在 view 、 model 、 template 的哪里,在系统环境上编辑器上,还是就是特殊字符编码的问题。
    sudoz
        8
    sudoz  
       2016-01-04 16:30:30 +08:00
    没有历史包袱的项目, 为什么还用 2.7 =_=

    能用 3.x 就用 3.x
    muzzy
        9
    muzzy  
    OP
       2016-01-04 16:45:52 +08:00
    @sudoz 有历史包袱的
    muzzy
        10
    muzzy  
    OP
       2016-01-04 17:33:55 +08:00
    @MrEggNoodle
    @HikiJoy
    我修改了 template 里面的一个 html 页面,显示的时候由英文改成中文。通过 url 配置指向 views.py 。 html 以及 views.py 的编码方式都是 u8 ,编辑器及项目工程的编码方式也以改成 u8 。 views.py 前面没有报错,最后 return 我修改的那个 html 。前台便输出标题的那个错误。
    也是刚刚接触 django ,快速的看了一遍教程后,在 github 上 forks 一个项目,拿下来做汉化的时候出的问题。
    MrEggNoodle
        11
    MrEggNoodle  
       2016-01-04 20:19:45 +08:00
    @muzzy 能否把你关键的代码分开一部分一部分贴出来?
    pynix
        12
    pynix  
       2016-01-05 07:10:12 +08:00
    你处在 python 鄙视链最底端。。。哈哈。。
    muzzy
        13
    muzzy  
    OP
       2016-01-05 08:55:48 +08:00
    @pynix 待我一步一步往上爬......
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2625 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:34 · PVG 13:34 · LAX 21:34 · JFK 00:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.