Как «вырезать и вставить» влияет на кодировку символов и что может пойти не так? - PullRequest
18 голосов
/ 18 декабря 2009

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

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

1 Ответ

20 голосов
/ 18 декабря 2009

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

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

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

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

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