【发布时间】:2013-03-21 07:15:47
【问题描述】:
嗯,好的,所以我在编码方面遇到了这个大问题,我只是不知道如何处理它。经过两天的谷歌搜索,我想我已经没有选择了:)
我想做的是以下。
- 在网站的文本框中放置文本
- 将文本发送到后端(用 Python 编写)
- 使用文本创建:
一种。 PIL 中的图像。
湾。 MySQL 中的一个条目。
现在,当我们谈论常规字符时,所有这些都可以顺利进行。但是当我尝试使用韩语、波兰语、日语字符时,我在图像和数据库中都插入了看起来很奇怪的字符。在下面的示例中,我将使用由波兰字符组成的三个字符串 - “ąść”。
这是我在谷歌搜索后所做的。
在 .htaccess 中插入以下内容:
AddCharset UTF-8 .py .css .js .html
我的 python 文件现在开始于:
#!/usr/bin/python
# -*- coding: utf-8 -*-
我所有的 MySQL 数据库都以“utf8_unicode_ci”编码。
现在,这是我正在尝试做的一个示例...每当我解析“ąść”(三个波兰字符)时,它都会保存在数据库中并在图像上生成为:
ąść
现在,一些调试问题。我直接进入 Python 并将以下内容分配给通常解析其文本的变量 (value_text1)(所以 - 没有文本解析,只需设置固定文本以生成图像并放入数据库):
A) 如果我选择value_text1 = 'ąść',我会得到…ść。
B) 如果我选择value_text1 = u'ąść',我会收到以下错误消息:
UnicodeEncodeError:“latin-1”编解码器无法对字符进行编码 位置 0-1:序数不在范围内(256)
C) 如果我选择value_text1 = u'ąść'.encode('UTF-8'),结果会得到…ść。
D) 如果我使用 value_text1 = u'\u0105\u015B\u0107'.encode('UTF-8'),其中 "\u0105\u015B\u0107" 是“ąść”的实际 unicode,我会得到 …ść。
真的不知道我做错了什么——服务器设置、python 文件设置、错误的命令?将不胜感激任何想法,非常感谢您提前。
【问题讨论】:
-
如何在 PIL 中呈现文本?
-
你从哪里得到那个错误信息?引发该错误消息的代码是什么?
-
也许你的编辑器没有在 utf-8 中保存非 ascii 字符。
-
@BrenBarn:我认为您在尝试执行
u"somestringwith-ąść"时总是会遇到该错误 -
@jazzpi:如果您正确设置了编码,则不会(除非您尝试打印它或其他东西)。
标签: python mysql unicode utf-8 character-encoding