Как “вырезать и вставить” влияет на кодировку символов и что может пойти не так?

StackOverflow https://stackoverflow.com/questions/1929812

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня есть документ A в кодировке A, отображаемый в инструменте A, и документ B в кодировке B, отображаемый в инструменте B.Если я вырежу и вставлю (часть) B в A, какой может быть результирующая кодировка символов?Я понимаю, что это зависит от инструмента A и инструмента B и информации, хранящейся в буфере вставки (который, предположительно, может содержать кодировку?) и операционной системы.

Что должны делать высококачественные инструменты?и на практике, сколько распространенных инструментов (например,Word, TextPad, различные IDE и т.д.) Хорошо справляются с работой?

Это было полезно?

Решение

Прежде всего, внутреннее представление текста текстовым редактором не имеет никакого отношения к тому, как текст кодируется (сериализуется) при сохранении файла.Таким образом, документ не находится "в" кодировке;это последовательность абстрактных символов.Когда документ сохраняется в файл (или передается по сети) тогда это кодируется.

Каждое приложение само решает, что оно помещает в буфер обмена.Как правило, приложение Windows, которое знает, что оно делает, помещает в буфер обмена несколько различных представлений.Когда вы вставляете в другое приложение, приложение будет искать представление, которое наилучшим образом соответствует его потребностям.

В вашем случае текстовый редактор (который знает, что он делает) поместит представление выбранной строки в формате Unicode в буфер обмена (где Unicode в Windows обычно перемещается как UTF-16, но это не важно).Когда вы вставляете в другое приложение, оно вставит эту последовательность символов Юникода в документ в точке выбора.

Есть приложение под названием "ClipSpy", которое поможет вам увидеть, о чем я говорю, в интерактивном режиме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top