gpt4 book ai didi

python - UTF-8 latin-1 转换问题,python django

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:27 25 4
gpt4 key购买 nike

好的,所以我的问题是我有字符串 '\222\222\223\225',它在数据库中存储为 latin-1。我从 django(通过打印它)得到的是以下字符串,'âââ¢',我假设它是它的 UTF 转换。现在我需要将字符串传递给一个函数执行此操作:

strdecryptedPassword + chr(ord(c) - 3 - intCounter - 30)

我收到这个错误:

chr() arg not in range(256)

如果我首先尝试将字符串编码为 latin-1,则会出现此错误:

'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)

我已经阅读了很多关于字符编码如何工作的文章,但是我遗漏了一些东西,因为我就是不明白!

最佳答案

您的第一个错误“chr() arg not in range(256)”可能意味着您下溢了该值,因为 chr 不能取负数。我不知道当 inputcounter + 33 大于实际字符表示时加密算法应该做什么,您必须检查在这种情况下该做什么。

关于第二个错误。您必须 decode() 而不是 encode() 常规字符串对象才能正确表示数据。 encode() 接受一个 unicode 对象(以 u' 开头的对象)并生成要输出或写入文件的常规字符串。 decode() 接受一个字符串对象并生成一个具有相应代码点的 unicode 对象。当从字符串对象生成时,这是通过 unicode() 调用完成的,您也可以改为调用 a.decode('latin-1')。

>>> a = '\222\222\223\225'
>>> u = unicode(a,'latin-1')
>>> u
u'\x92\x92\x93\x95'
>>> print u.encode('utf-8')
ÂÂÂÂ
>>> print u.encode('utf-16')
ÿþ
>>> print u.encode('latin-1')

>>> for c in u:
... print chr(ord(c) - 3 - 0 -30)
...
q
q
r
t
>>> for c in u:
... print chr(ord(c) - 3 -200 -30)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: chr() arg not in range(256)

关于python - UTF-8 latin-1 转换问题,python django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274361/

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