如果您查看此处的此表,您会发现它有一个 Unicode 字符的转义序列列表,但实际上对我来说不起作用。
\n\n例如,对于“%96”,它应该是 \xe2\x80\x93,我在尝试解码时收到错误:
\n\ndecodeURIComponent("%96");\nURIError: URI malformed\nRun Code Online (Sandbox Code Playgroud)\n\n如果我尝试编码“\xe2\x80\x93”,我实际上得到:
\n\nencodeURIComponent("\xe2\x80\x93");\n"%E2%80%93"\nRun Code Online (Sandbox Code Playgroud)\n\n我在互联网上搜索,看到了这个页面,其中提到分别使用 escape 和 unescape 与decodeURIComponent和encodeURIComponent。这似乎没有帮助,因为无论我尝试什么,%96 都不会显示为“\xe2\x80\x93”,这当然是行不通的:
\n\ndecodeURIComponent(escape("%96));\n"%96"\nRun Code Online (Sandbox Code Playgroud)\n\n不是很有帮助。
\n\n如何使用 JavaScript 将“%96”变为“\xe2\x80\x93”(无需为我可能遇到的每个可能的 unicode 字符硬编码映射)?
\n我还有更多这样的 DIV:
<span class="date">Fri November 9, 2012</span>
Run Code Online (Sandbox Code Playgroud)
所有这些都在一个 var 中。例子:
var = '
...<span class="date">Fri November 9, 2012</span>...
...<span class="date">Fri November 9, 2012</span>...
';
Run Code Online (Sandbox Code Playgroud)
我尝试用包含该日期的图像替换每个日期。
我有这一行,但这不起作用:
ver = ver.replace(/<span class="date">(.*)<\/span>/g,'<span class="date"><img src="generateLink.php?nr='+encodeURIComponent($1)+'" /></span>');
Run Code Online (Sandbox Code Playgroud)
我的问题是:我不能在正则表达式中使用encodeURIComponent?
这是我想要编码为 JSON 的数组的 var_dump:
array(3) {
[0]=> array(2) {
["From"]=> string(14) "08 August 2013"
["To"]=> string(14) "21 August 2013"
}
[1]=> array(2) {
["From"]=> string(14) "11 August 2013"
["To"]=> string(14) "21 August 2013"
}
[2]=> array(2) {
["From"]=> string(14) "12 August 2013"
["To"]=> string(14) "01 August 2013"
}
}
Run Code Online (Sandbox Code Playgroud)
当我对其进行编码时,输出如下所示:
[
{"From":"08 August 2013","To":"21 August 2013"},
{"From":"11 August 2013","To":"21 August 2013"},
{"From":"12 August 2013","To":"01 August 2013"}
]
Run Code Online (Sandbox Code Playgroud)
但我希望它是这样的:
{
0:{"From":"08 August 2013","To":"21 August 2013"},
1:{"From":"11 August 2013","To":"21 August 2013"},
2:{"From":"12 …Run Code Online (Sandbox Code Playgroud) 我只是在做一个数据库表的下拉并尝试将它读入python,如下所示:
with query(full_query_string) as cur:
arr = cur.fetchall()
这会产生以下错误fetchall():
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 4: invalid continuation byte
如果我select *收到此错误,而如果我限制为少量行,则不会收到此错误。我尝试在这个 SO post UnicodeDecodeError, invalid continuation byte之后用一些编码来支付,但没有一个能做到这一点。在我不知道编码如何出错的大数据库表中,处理这个问题的最有效方法是什么?此外,没有特定的行是必须的,但我宁愿获得所有行,而不是有此编码问题的行。
当我运行 Python 代码并打印(项目)时,出现以下错误:
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 61-61: Non-BMP character not supported in Tk
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def getUserFollowers(self, usernameId, maxid = ''):
if maxid == '':
return self.SendRequest('friendships/'+ str(usernameId) +'/followers/?rank_token='+ self.rank_token,l=2)
else:
return self.SendRequest('friendships/'+ str(usernameId) +'/followers/?rank_token='+ self.rank_token + '&max_id='+ str(maxid))
def getTotalFollowers(self,usernameId):
followers = []
next_max_id = ''
while 1:
self.getUserFollowers(usernameId,next_max_id)
temp = self.LastJson
for item in temp["users"]:
print(item)
followers.append(item)
if temp["big_list"] == False:
return followers
next_max_id = temp["next_max_id"]
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
在RestTemplate.exchange()将编码的URL都无效字符,但不+作为+是有效的URL字符。但是如何+在任何 URL 的查询参数中传递 a ?
在python2中,我可以整天生成以字符串格式表示的这些十六进制字节
'\x00\xaa\xff'
>>>’00'.decode('hex') + 'aa'.decode('hex') + 'ff'.decode('hex')
>>>'\x00\xaa\xff'
Run Code Online (Sandbox Code Playgroud)
同样,我可以在 python3 中做到这一点
>>> bytes.fromhex(’00’) + bytes.fromhex(‘aa’) + bytes.fromhex(‘ff’)
>>>b'\x00\xaa\xff'
Run Code Online (Sandbox Code Playgroud)
根据py2->py3这里的变化
Python 3.0 使用文本和(二进制)数据的概念,而不是 Unicode 字符串和 8 位字符串。所有文本都是Unicode;但是编码后的 Unicode 表示为二进制数据。
所以 Py2 版本的输出是一个字符串,而 Py3 版本的输出是字节类型的二进制数据
但我真的需要一个字符串版本!
根据上述文档:
由于 str 和 bytes 类型不能混合使用,您必须始终在它们之间进行显式转换。使用 str.encode() 从 str 转到 bytes,使用 bytes.decode() 从 bytes 转到 str。您还可以分别使用 bytes(s, encoding=...) 和 str(b, encoding=...) 。
好的,现在我必须解码这个字节类型的二进制数据......
>>> b'\x00\xaa\xff'.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in …Run Code Online (Sandbox Code Playgroud) 对不起,如果标题令人困惑,但我已经研究了两个小时,并且不知道我应该如何问这个问题,所以任何人都可以随意编辑这篇文章。
我有这个字符串变量,我使用网络抓取创建了它,它使用特殊字符,看起来像“\ud83d\ude00\u0107\u00e7\n hello”,打印时没有引号。问题是我希望它打印实际的特殊字符,但我不确定应该使用哪种编码方法。如果我复制并粘贴确切的字符串并打印它,它工作正常,但作为我创建的变量,它不显示特殊字符,只显示文本。
我曾尝试使用 json.load、unicode-escape、UTF-8 和其他一些方法将其转换为字符串,但老实说我不确定我应该使用什么方法
page = requests.get('https://www.example.com')
soup = str(BeautifulSoup(page.text, 'html.parser')).splitlines()
for line in soup:
if 'hello' in line:
print(line) #produces literal text of \ud83d\ude00\u0107\u00e7 \n hello
print('\ud83d\ude00\u0107\u00e7 \n hello') #produces wanted result
Run Code Online (Sandbox Code Playgroud)
我希望结果看起来像这样:
?C
你好
我正在开发我自己的网站项目,我需要使用 websocket 从目标站点抓取数据。数据是货币和股票价格变动的实时馈送或滴答。我得到以下格式的输出。
试穿http://websocket.org/echo.html:
地点: wss://streamer.finance.yahoo.com/
单击连接。
信息: {"subscribe":["AMZN"]}
输出:
CONNECTED
SENT: {"subscribe":["AMZN"]}
RECEIVED: CgRBTVpOFaQY3EQY4Kn0/99bKgNOTVMwCDgBRYjKzDxIyvN9ZQBQ4T7YAQQ=
RECEIVED: CgRBTVpOFaQY3EQY4Kn0/99bKgNOTVMwCDgBRYnKzDxIzPV9ZQBQ4T7YAQQ=
RECEIVED: CgRBTVpOFT0a3EQYsLn0/99bKgNOTVMwCDgBRYMG5DxIkP99ZQDg+j7YAQQ=
RECEIVED: CgRBTVpOFQAY3EQYwIf1/99bKgNOTVMwCDgBRYd5wzxIxod+ZQAQ1z7YAQQ=
RECEIVED: CgRBTVpOFQAY3EQYwIf1/99bKgNOTVMwCDgBRYd5wzxIroh+ZQAQ1z7YAQQ=
RECEIVED: CgRBTVpOFRQS3EQY8PT1/99bKgNOTVMwCDgBRYC1WjxIhI5+ZQCgcD7YAQQ=
RECEIVED: CgRBTVpOFRQS3EQY8PT1/99bKgNOTVMwCDgBRYG1WjxImo5+ZQCgcD7YAQQ=
RECEIVED: CgRBTVpOFUgN3EQY4KP2/99bKgNOTVMwCDgBRSBhnjtIvpJ+ZQBArj3YAQQ=
RECEIVED: CgRBTVpOFUgN3EQY4KP2/99bKgNOTVMwCDgBRSBhnjtI9J1+ZQBArj3YAQQ=
RECEIVED: CgRBTVpOFUgN3EQY4KP2/99bKgNOTVMwCDgBRSBhnjtIsqR+ZQBArj3YAQQ=
RECEIVED: CgRBTVpOFUgN3EQY4KP2/99bKgNOTVMwCDgBRSBhnjtInq5+ZQBArj3YAQQ=
Run Code Online (Sandbox Code Playgroud)
我不知道如何解码或它是什么类型的加密。谁能告诉我如何解码它的编码/解码类型是什么?我将使用 PHP 进行解码(如果可以解码)。
我有一些二进制数据,我想用二维码编码,然后能够解码,所有这些都在 bash 中。搜索后,看起来我应该qrencode用于编码和zbarimg解码。经过一些故障排除后,我仍然无法解码我编码的内容
知道为什么吗?目前我最接近解决方案的是:
$ dd if=/dev/urandom bs=10 count=1 status=none > data.bin
$ xxd data.bin
00000000: b255 f625 1cf7 a051 3d07 .U.%...Q=.
$ cat data.bin | qrencode -l H -8 -o data.png
$ zbarimg --raw --quiet data.png | xxd
00000000: c2b2 55c3 b625 1cc3 b7c2 a051 3d07 0a ..U..%.....Q=..
Run Code Online (Sandbox Code Playgroud)
看起来我不是很远,但仍然有一些东西。
编辑 1:一个可能的解决方法是使用 base64 包装,如@leagris 的回答中所述。
编辑 2:使用 base64 编码使消息的大小加倍。我首先使用二进制文件的原因是为了节省大小,所以我想避免这种情况。不接受@leagris 的答案,因为我希望它是“完整的二进制文件”,抱歉。
编辑 3:截至 2020 年3 月 3 日,这似乎是一个众所周知的问题,zbarimg解决此问题的拉取请求正在进行中:
https://github.com/mchehab/zbar/pull/64
编辑 …