Как сказать, является ли текстом на буфере обмена окон ISO 8859 или UTF-8 в C++?

Однажды я столкнулся с той же проблемой и следовал ответу по следующей ссылке, чтобы решить мою проблему. https://stackoverflow.com/a/44859379/4437710

По сути, замените use Illuminate\Support\Facades\Schema; на use Schema;. Я не знаю причину этого странного поведения. Я не уверен, что это сработает и в вашем случае. Но вы можете попробовать.

Еще один прием, взятый из Интернета (не проверенный мной): Для Laravel 5.4 используйте \Illuminate\Database\Schema\Builder::defaultStringLength(191); для правильного пути ссылки на функцию

.

6
задан John Millikin 3 October 2008 в 03:35
поделиться

4 ответа

Проверьте определение CF_LOCALE на уровне этой страницы Microsoft. Это говорит Вам локаль текста в буфере обмена. Еще лучше при использовании CF_UNICODETEXT вместо этого, Windows преобразует в UTF-16 для Вас.

4
ответ дан 17 December 2019 в 00:16
поделиться

UTF-8 имеет определенную структуру для байтов неASCII. Можно просканировать для байтов> = 128, и если кто-либо обнаруживается, проверьте, формируют ли они допустимую строку UTF-8.

Допустимые форматы байта UTF-8 могут быть найдены на Википедию:

Unicode             Byte1           Byte2           Byte3           Byte4
U+000000-U+00007F   0xxxxxxx
U+000080-U+0007FF   110xxxxx        10xxxxxx
U+000800-U+00FFFF   1110xxxx        10xxxxxx        10xxxxxx
U+010000-U+10FFFF   11110xxx        10xxxxxx        10xxxxxx        10xxxxxx

старый ответ:

Вы не имеете к - весь текст ASCII является допустимым UTF-8, таким образом, можно просто декодировать его как UTF-8, и он будет работать как ожидалось.

Чтобы протестировать, если это содержит символы неASCII, можно просканировать для байтов> = 128.

2
ответ дан 17 December 2019 в 00:16
поделиться

Я могу ошибиться, но я думаю, что Вы не можете: если я открываю файл UTF-8 без BOM в моем редакторе, он отображен по умолчанию как ISO-8859-1 (моя локаль), и около некоторого странного использования внешних (для меня) акцентируемые символы, у меня нет сильной визуальной подсказки, что это - UTF-8 (если он не кодируется в другом отношении в другом месте, например, объявление набора символов в HTML или XML): это - совершенно действительный текст Ansi.

John записал, что "весь текст ASCII является допустимым UTF-8", но реверс верен.

Windows XP + использование естественно UTF-16, и имеют формат буфера обмена для него, но AFAIK он просто игнорирует UTF-8 без специального режима для него.
(Ну, существует API для преобразования UTF-8 в UTF-16 (или Ansi, и т.д.), на самом деле).

1
ответ дан 17 December 2019 в 00:16
поделиться

Вы могли проверить для наблюдения obj. IsDataAvailable (CF_UNICODETEXT), чтобы видеть, доступна ли unicode версия того, что находится на буфере обмена.

- Adam

0
ответ дан 17 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: