嗯,好的,所以我遇到了编码方面的这个大问题,我只是不知道如何处理它。经过两天的谷歌搜索,我想我已经没有选择了:)
我想做的是以下内容。
- 在网站的文本框中放置文本
- 将文本发送到后端(用 Python 编写)
- 利用文字创作:
A。 PIL 中的图像。
b. 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' codec can't encode characters in position 0-1: ordinal not in range(256)
C) 如果我使用 value_text1 = u'ąść'.encode('UTF-8')
我得到 …ść
作为结果。
D) 如果我使用 value_text1 = u'\u0105\u015B\u0107'.encode('UTF-8')
,其中 "\u0105\u015B\u0107"
是我得到 …ść
的“ąść”的实际 unicode。
真的不知道我做错了什么 - 服务器设置、python 文件设置、错误的命令?非常感谢您的任何想法,在此先感谢您。
最佳答案
如果我在交互式 shell 或 .py 文件中尝试
#!/usr/bin/python
# -*- coding: utf-8 -*-
value_text1 = u'ąść'
print value_text1
它对我来说效果很好,所以我想这与您的服务器配置有关。
顺便说一句,确保在连接到服务器时使用 charset="utf-8"。
关于python - Python 中的 Unicode 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722694/