python - Python 中的 Unicode 问题

标签 python mysql unicode utf-8 character-encoding

嗯,好的,所以我遇到了编码方面的这个大问题,我只是不知道如何处理它。经过两天的谷歌搜索,我想我已经没有选择了:)

我想做的是以下内容。

  1. 在网站的文本框中放置文本
  2. 将文本发送到后端(用 Python 编写)
  3. 利用文字创作:
    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/

相关文章:

php - 在 MAMP 中导入数据库时​​出错

mysql - 连接两个表并从结果中进行选择

objective-c - iOS CFStringTransform 和 Đ

java - Scala REPL 中的 Unicode 正则表达式

python - 在 Python 中编写此正则表达式的更好方法

python - 运行位于 GCS 中的 .PY 脚本

mysql - SQL left join on condition OR other 条件

python - 追踪 Python 2 中的隐式 unicode 转换

python - Scrapy抛出属性错误

python - 如何使用 SpaCy 解决西类牙语词形还原问题?