我正在尝试以下代码:
s = "سلام"
'{:b}'.format(int(s.encode('utf-8').encode('hex'), 16))
但是出现这个错误:
'{:b}'.format(int(s.encode('utf-8').encode('hex'), 16))
UnicodeDecodeError:'ascii'编解码器不能解码字节0xd3在位置0:序数不在范围(128)
我试过“{:b}”。格式(int(s.encode('utf-8'))。编码('hex'),16))
但没有更改。
我该怎么办?
由于您使用的是python 2,s=“سلام”
是一个字节字符串(无论您的终端使用何种编码,大概是utf8):
>>> s = "سلام"
>>> s
'\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85'
不能对字节字符串进行编码(因为它们已经“编码”)。您正在寻找unicode(“real”)字符串,python2中的字符串必须以
u
作为前缀:
>>> s = u"سلام"
>>> s
u'\u0633\u0644\u0627\u0645'
>>> '{:b}'.format(int(s.encode('utf-8').encode('hex'), 16))
'1101100010110011110110011000010011011000101001111101100110000101'
如果你从一个函数中得到一个字节串,比如
raw_input
,那么你的字符串已经被编码了——只需跳过encode
部分:
'{:b}'.format(int(s.encode('hex'), 16))
或者(如果你要用它做其他事情)将它转换为Unicode:
s = s.decode('utf8')
这假设您的输入是UTF-8编码的,如果不是这样,请检查
sys。斯丁。首先编码。
i10n的东西是复杂的,这里有两篇文章,将帮助你进一步:
>
绝对最低要求每个软件开发人员绝对,积极地必须了解Unicode和字符集
每一个程序员绝对地、肯定地需要了解编码和字符集来处理文本
问题内容: 我有一个包含unicode字符等的字符串,以某种方式不被我接收,但被作为接收。如何将其转换回unicode? 显然不是答案。那是什么 问题答案: Unicode转义仅适用于unicode字符串,因此 实际上是由6个字符组成的字符串:“ \”,“ u”,“ 2”,“ 0”,“ 2”,“ 6”。 要从中制作出unicode,请使用:
问题内容: 当我尝试使用“ unicode(head.contents [3])”获取标签的内容时,我得到类似于以下的输出:“ Christensen Sk \ xf6ld”。我希望转义序列作为字符串返回。如何在python中做? 问题答案: 假设Python将名称视为普通字符串,则首先必须将其解码为unicode: 实现此目的的另一种方法: 注意字符串前面的“ u”,表示它是未编码的。如果进行打
问题内容: 我有unicode ,我希望它以字典格式。 我想要它的格式。 我试过了,但它返回的字符串不是字典。 谁能帮我? 问题答案: 您可以使用内置包: 帮助ast模块中的literal_eval函数: literal_eval(node_or_string) 安全地评估表达式节点或包含Python表达式的字符串。提供的字符串或节点只能由以下Python文字结构组成:字符串,数字,元组,列表,字
问题内容: 我正在做一些抓取,并且站点经常使用实体来表示非字符。Python是否有一个实用程序可以接受带有实体的字符串并返回类型? 例如: 我回来了: 代表带有音调标记的。以二进制形式表示为16位01ce。我想将html实体转换为值 问题答案: 标准库自己的具有未记录的函数,它完全按照你的想法执行操作:
问题内容: 如果明确定义,以下unicode和字符串可以单独存在: 如果只分配了上述变量,如何在Python 2.5或2.6中将其转换为? 编辑: 我做了以下事情: 解决了我的问题。有人可以向我解释到底发生了什么吗? 问题答案: 您似乎混淆了编码。看来您真正想要的是等效于。 但是您似乎是被错误解码的UTF-8编码。您可以通过将unicode字符串转换为普通字符串来解决此问题。我不确定最好的方法是什
问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str
我需要读入带有unicode转义的标准ascii样式字符串,并将其转换为包含utf8编码等价物的std::字符串。因此,例如“\u03a0”(包含6个字符的std::字符串)应转换为包含两个字符的std::字符串,分别为0xCE和0xA0,以原始二进制格式。 如果有一个简单的答案使用icu或boost我会很高兴,但我还没有找到一个。 (这类似于将Unicode字符串转换为转义ASCII字符串,但注
问题内容: 如何在Swift中将字符串转换为Unicode(UTF-8)字符串? 在Objective中,我可以这样写: 如何在Swift中做类似的事情? 问题答案: 使用此代码, 希望对您有所帮助