gpt4 book ai didi

python - Python 中 unicode() 和 encode() 函数的使用

转载 作者:IT老高 更新时间:2023-10-28 21:31:25 24 4
gpt4 key购买 nike

我在编码 path 变量并将其插入到 SQLite 数据库时遇到问题。我试图用 encode("utf-8") 函数解决它,但没有帮助。然后我使用了 unicode() 函数,它给了我类型 unicode

print type(path)                  # <type 'unicode'>
path = path.replace("one", "two") # <type 'str'>
path = path.encode("utf-8") # <type 'str'> strange
path = unicode(path) # <type 'unicode'>

最后我获得了 unicode 类型,但是当 path 变量的类型为 str

sqlite3.ProgrammingError: You must not use 8-bit bytestrings unlessyou use a text_factory that can interpret 8-bit bytestrings (liketext_factory = str). It is highly recommended that you instead justswitch your application to Unicode strings.

你能帮我解决这个错误并解释 encode("utf-8")unicode() 函数的正确用法吗?我经常和它打架。

这个 execute() 语句引发了错误:

cur.execute("update docs set path = :fullFilePath where path = :path", locals())

我忘记更改遇到同样问题的 fullFilePath 变量的编码,但我现在很困惑。我应该只使用 unicode() 还是 encode("utf-8") 还是两者都使用?

我不能用

fullFilePath = unicode(fullFilePath.encode("utf-8"))

因为它引发了这个错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position32: ordinal not in range(128)

Python 版本是 2.7.2

最佳答案

str 是以字节为单位的文本表示,unicode 是以字符为单位的文本表示。

您将文本从字节解码为 un​​icode,然后使用某种编码将 unicode 编码为字节。

即:

>>> 'abc'.decode('utf-8')  # str to unicode
u'abc'
>>> u'abc'.encode('utf-8') # unicode to str
'abc'

UPD Sep 2020:答案是在 Python 2 最常用的时候写的。在 Python 3 中,str 被重命名为 bytesunicode 被重命名为 str

>>> b'abc'.decode('utf-8') # bytes to str
'abc'
>>> 'abc'.encode('utf-8'). # str to bytes
b'abc'

关于python - Python 中 unicode() 和 encode() 函数的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10288016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com