Строка переворачивается, когда я объединяю два символа в python3, что не ожидается - PullRequest
0 голосов
/ 24 мая 2019

Мне нужно использовать какой-то специальный символ, такой как «מ».Когда я совмещаю это с другим простым персонажем, случается странная вещь.Результат имеет противоположный порядок.Когда я выполняю «1» + «מ» и печатаю, я вижу «מ» первым, а «1» вторым.

Что я хочу сделать, так это некоторые строковые операции, сохранить имя файла, используя этоимя.

Я проверяю некоторые способы декодирования или кодирования, но не смог.

a = 'מ'
print(a.encode('UTF-8'))

b = '1' + a
print(b.encode('utf8').decode('utf8'))  # not expected

print(b.startswith('1'))

print(b'\x31\xd7\x9e'.decode('utf8'))  # unicode of '1' is 31

Почему это произошло?

1 Ответ

1 голос
/ 24 мая 2019

Это не из-за кодировки, а из-за Unicode.

Ваша строка a справа налево (в соответствии с Unicode)

Число 1 имеет только предпочтение слева отвправо, но он не будет переопределять сценарии справа налево для сценариев справа налево.

Таким образом, байты расположены в правильном порядке (как семантический порядок), но отображение будет обратным, потому что это строка справа налево.

Вы можете переопределить порядок в Unicode или (желательно) с помощью markdown (например, HTML-элементов).

Итак: ничего не касательно кодирования, это просто способ печати с правом на печать.оставленные персонажи.Семантика должна оставаться между кодировкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...