Django 的中文编码问题

2016-01-04 10:48:54 +08:00
 muzzy

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

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

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

能用 3.x 就用 3.x
muzzy
2016-01-04 16:45:52 +08:00
@sudoz 有历史包袱的
muzzy
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
2016-01-04 20:19:45 +08:00
@muzzy 能否把你关键的代码分开一部分一部分贴出来?
pynix
2016-01-05 07:10:12 +08:00
你处在 python 鄙视链最底端。。。哈哈。。
muzzy
2016-01-05 08:55:48 +08:00
@pynix 待我一步一步往上爬......

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/248121

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX