MFC: Как проверить, является ли ввод символов Unicode? - PullRequest
0 голосов
/ 19 апреля 2010

У меня есть поле ввода текста, которое принимает определенное максимальное количество символов. Это количество символов должно измениться, если ввод символов осуществляется в Юникоде. Вопрос:

Есть ли способ проверить, является ли ввод символов в кодировке Unicode или нет?

Ответы [ 4 ]

1 голос
/ 19 апреля 2010

Проверьте длину строки и размер в байтах.

  • Если оба равны, то это ASCII.

  • Если размер в байтах больше длины строки, то он содержит символы UNICODE.

Я помню, что использовал функции Len () и LenB () в VS6 для одного и того же ...

GOODLUCK !!

0 голосов
/ 22 апреля 2010

Любой вводимый вами символ - это Unicode, потому что Unicode охватывает все кодовые страницы, поддерживаемые Windows, и многое другое.

Вы можете вызвать IsWindowUnicode, и если результат равен true, и вы извлекаете текст с помощью GetWindowTextW (или определены GetWindowText и UNICODE), то результат сохраняется в строке Unicode (wchar_t или WCHART, то же самое).

В противном случае вы извлекаете результат в массив символов, и он кодируется в системной кодовой странице (также неправильно называемой «кодовой страницей ANSI»)

0 голосов
/ 22 апреля 2010

Я решил использовать регулярные выражения для проверки ввода каждого символа, если он в юникоде или нет, проще ...:)

0 голосов
/ 19 апреля 2010

Microsoft предоставляет API IsTextUnicode. Некоторые из его ошибок известны.

...