Python 3.x 当我在python3中组合两个字符时,字符串反转,这是不期望的
我需要使用一些特殊的字符,比如“מ”。当我把它和另一个简单的角色结合起来时,奇怪的事情发生了。结果的顺序相反。当我执行“1”+“מ”并打印时,我可以看到第一个是“מ”,第二个是“1” 我想做的是一些字符串操作,使用这个名称保存文件名 我检查了一些解码或编码方式,但失败了Python 3.x 当我在python3中组合两个字符时,字符串反转,这是不期望的,python-3.x,character-encoding,Python 3.x,Character Encoding,我需要使用一些特殊的字符,比如“מ”。当我把它和另一个简单的角色结合起来时,奇怪的事情发生了。结果的顺序相反。当我执行“1”+“מ”并打印时,我可以看到第一个是“מ”,第二个是“1” 我想做的是一些字符串操作,使用这个名称保存文件名 我检查了一些解码或编码方式,但失败了 a='מ' 打印(a.encode('UTF-8')) b='1'+a 打印(b.编码('utf8')。解码('utf8'))#不应 打印(b.startswith('1')) 打印(b'\x31\xd7\x9e'.解码('ut
a='מ'
打印(a.encode('UTF-8'))
b='1'+a
打印(b.编码('utf8')。解码('utf8'))#不应
打印(b.startswith('1'))
打印(b'\x31\xd7\x9e'.解码('utf8'))#“1”的unicode是31
为什么会发生这种情况?这不是因为编码,而是因为Unicode 您的字符串
a
是从右向左的(根据unicode)
编号1
仅具有从左到右的首选项,但它不会覆盖从右到左脚本中的从右到左
因此字节的顺序是正确的(就像语义顺序一样),但是显示会反转,因为它是一个从右向左的字符串
您可以在Unicode中覆盖order wither,或者(首选)使用markdown(例如HTML元素)
所以:编码没什么,只是从右向左打印字符的方法。语义应该保留在编码之间