Как “вырезать и вставить” влияет на кодировку символов и что может пойти не так?
-
20-09-2019 - |
Вопрос
У меня есть документ A в кодировке A, отображаемый в инструменте A, и документ B в кодировке B, отображаемый в инструменте B.Если я вырежу и вставлю (часть) B в A, какой может быть результирующая кодировка символов?Я понимаю, что это зависит от инструмента A и инструмента B и информации, хранящейся в буфере вставки (который, предположительно, может содержать кодировку?) и операционной системы.
Что должны делать высококачественные инструменты?и на практике, сколько распространенных инструментов (например,Word, TextPad, различные IDE и т.д.) Хорошо справляются с работой?
Решение
Прежде всего, внутреннее представление текста текстовым редактором не имеет никакого отношения к тому, как текст кодируется (сериализуется) при сохранении файла.Таким образом, документ не находится "в" кодировке;это последовательность абстрактных символов.Когда документ сохраняется в файл (или передается по сети) тогда это кодируется.
Каждое приложение само решает, что оно помещает в буфер обмена.Как правило, приложение Windows, которое знает, что оно делает, помещает в буфер обмена несколько различных представлений.Когда вы вставляете в другое приложение, приложение будет искать представление, которое наилучшим образом соответствует его потребностям.
В вашем случае текстовый редактор (который знает, что он делает) поместит представление выбранной строки в формате Unicode в буфер обмена (где Unicode в Windows обычно перемещается как UTF-16, но это не важно).Когда вы вставляете в другое приложение, оно вставит эту последовательность символов Юникода в документ в точке выбора.
Есть приложение под названием "ClipSpy", которое поможет вам увидеть, о чем я говорю, в интерактивном режиме.