python - 我如何解码阿拉伯语和乌尔都语字符python
问题描述
我正在尝试将 base64 中的字符串转换为实际可读的字符,但某些文本包含乌尔都语和阿拉伯语中的字符,例如:
\\xd8\\xb9\\xdb\\x81\\xd8\\xaf\\xd9\\x90 \\xd9\\x86\\xd9\\x88\r\n\\xd8\\xa2\\xd9\\x8f\\xd8\\xb1\\xd8\\xaf\\xd9\\x88 \\xd8\\xaa\\xd8\\xaf\\xd8\\xb1\\xdb\\x8c\\xd8\\xb3 \\xd9\\x85\\xdb\\x8c\\xda\\xba \\xd8\\xa8\\xdb\\x81\\xd8\\xaa\\xd8\\xb1\\xdb\\x8c \\xda\\xa9\\xdb\\x92 \\xd9\\x84\\xdb\\x8c\\xdb\\x92 \\xd8\\xa7\\xdb\\x81\\xd8\\xaf\\xd8\\xa7\\xd9\\x81
当我删除多余的反斜杠并将其放入终端时,我得到
عÛدÙÙØ¢Ùرد٠تدرÛس Ù
ÛÚº بÛØªØ±Û Ú©Û Ù
ÛÛ Ø§ÛداÙ
如何正确转换上述字符串?
编辑:
我使用 gmail API 从一封电子邮件中得到了这个字符串。这是电子邮件的字符串:
DQpIaSBNT0hBTU1BRCwNCllvdXIgd29yayDYuduB2K_ZkCDZhtmIICANCjxodHRwczovL2NsYXNzcm9vbS5nb29nbGUuY29tL2MvTWpJek5UVXhNekl5T1RFMS9hL01qTTBPRE14TURrNE9EUXcvc3VibWlzc2lvbnM-ICANCmlzIGR1ZSB0b21vcnJvdy4gV291bGQgeW91IGxpa2UgdG8gdHVybiBpdCBpbj8NCg0K2Lnbgdiv2ZAg2YbZiA0KRHVlOiBKYW4gMjQNCk9QRU4gIA0KPGh0dHBzOi8vY2xhc3Nyb29tLmdvb2dsZS5jb20vYy9Nakl6TlRVeE16SXlPVEUxL2EvTWpNME9ETXhNRGs0T0RRdy9zdWJtaXNzaW9ucz4NCklmIHlvdSBkb24ndCB3YW50IHRvIHJlY2VpdmUgZW1haWxzIGZyb20gQ2xhc3Nyb29tLCB5b3UgY2FuIHVuc3Vic2NyaWJlICANCjxodHRwczovL2NsYXNzcm9vbS5nb29nbGUuY29tL3M-Lg0KDQpHb29nbGUgTExDDQoxNjAwIEFtcGhpdGhlYXRyZSBQa3d5DQpNb3VudGFpbiBWaWV3LCBDQSA5NDA0MyBVU0ENCg==
要对其进行解码,您可以通过 base64.urlsafe_b64decode 运行它。在这个字符串中,会有像上面列出的那些 unicode 字符。我如何将它们解码为乌尔都语和阿拉伯语字符?
解决方案
如何正确转换上述字符串?
text = '\\xd8\\xb9\\xdb\\x81\\xd8\\xaf\\xd9\\x90 \\xd9\\x86\\xd9\\x88\r\n\\xd8\\xa2\\xd9\\x8f\\xd8\\xb1\\xd8\\xaf\\xd9\\x88 \\xd8\\xaa\\xd8\\xaf\\xd8\\xb1\\xdb\\x8c\\xd8\\xb3 \\xd9\\x85\\xdb\\x8c\\xda\\xba \\xd8\\xa8\\xdb\\x81\\xd8\\xaa\\xd8\\xb1\\xdb\\x8c \\xda\\xa9\\xdb\\x92 \\xd9\\x84\\xdb\\x8c\\xdb\\x92 \\xd8\\xa7\\xdb\\x81\\xd8\\xaf\\xd8\\xa7\\xd9\\x81'
以下encode
/decode
进展可能会有所帮助:
text.encode().decode('unicode-escape').encode('latin1').decode('utf-8')
'عہدِ نو\r\nآُردو تدریس میں بہتری کے لیے اہداف'
更新 我使用 gmail API 从电子邮件中获得了这个字符串:
textb64 = 'DQpIaSBNT0hBTU1BRCwNCllvdXIgd29yayDYuduB2K_ZkCDZhtmIICANCjxodHRwczovL2NsYXNzcm9vbS5nb29nbGUuY29tL2MvTWpJek5UVXhNekl5T1RFMS9hL01qTTBPRE14TURrNE9EUXcvc3VibWlzc2lvbnM-ICANCmlzIGR1ZSB0b21vcnJvdy4gV291bGQgeW91IGxpa2UgdG8gdHVybiBpdCBpbj8NCg0K2Lnbgdiv2ZAg2YbZiA0KRHVlOiBKYW4gMjQNCk9QRU4gIA0KPGh0dHBzOi8vY2xhc3Nyb29tLmdvb2dsZS5jb20vYy9Nakl6TlRVeE16SXlPVEUxL2EvTWpNME9ETXhNRGs0T0RRdy9zdWJtaXNzaW9ucz4NCklmIHlvdSBkb24ndCB3YW50IHRvIHJlY2VpdmUgZW1haWxzIGZyb20gQ2xhc3Nyb29tLCB5b3UgY2FuIHVuc3Vic2NyaWJlICANCjxodHRwczovL2NsYXNzcm9vbS5nb29nbGUuY29tL3M-Lg0KDQpHb29nbGUgTExDDQoxNjAwIEFtcGhpdGhlYXRyZSBQa3d5DQpNb3VudGFpbiBWaWV3LCBDQSA5NDA0MyBVU0ENCg=='
import base64
print(base64.urlsafe_b64decode(textb64).decode('utf-8'))
嗨,MOHAMMAD,你的工作 عہدِ نو https://classroom.google.com/c/MjIzNTUxMzIyOTE1/a/MjM0ODMxMDk4ODQw/submissions 将于明天到期。你想把它上交吗?
عہدِ نو 截止日期:1 月 24 日开放 https://classroom.google.com/c/MjIzNTUxMzIyOTE1/a/MjM0ODMxMDk4ODQw/submissions 如果您不想收到来自“课堂”的电子邮件,可以取消订阅https://classroom.google.com /秒。Google LLC 1600 Amphitheatre Pkwy Mountain View, CA 94043 USA
推荐阅读
- javascript - 内容安全策略和 slickgrid
- python - 查看表格中不同的特殊字符
- flutter - 禁用 Flutter WebView 的长按
- c# - 如何从 Bot Framework Composer 导出 c# 代码
- javascript - 拖动后如何使可拖动元素复制?
- javascript - 从大 JSON 数据中提取一些数据
- python - 单击按钮后更改按钮的颜色 - tkinter
- fonts - 在 vis.js 中选择时是否可以在节点上设置字体颜色?
- javascript - 我无法获得所有成员
- javascript - 在javascript中将二进制字符串转换为字符串