2010-12-07 3 views
0

Здравствуйте
Для данной строки пути (char *) Я пытаюсь проверить, содержит ли он некоторые нелатинские символы Я проверяю, содержит ли он хотя бы один символ с acii code> = 128. Достаточно ли проверять таким образом или есть более эффективный способ?
Проверка строки для нелатинских символов в C++

+0

... А что если вы обнаружите, что строка «имеет в ней нелатинские символы»? – 2010-12-07 08:02:32

+1

Определить «нелатинский символ» .Какая кодировка символов? (UTF-8? ISO-8859-1?) Является ли é нелатинским символом? (Вероятно, он кодируется до> 128!) Наконец, ** нет кодов ASCII> = 128 **. Если вы проверяете символы ASCII с кодами> = 128, вы делаете это неправильно. – Thanatos 2010-12-07 08:09:53

+0

У меня есть строка (определенная как char * - старый код), что может получить значения как Japaneze, Korean и т. д. - таким образом, я бы хотел распознать такие случаи. – 2010-12-07 09:43:38

ответ

0

Это зависит от того, что вы делаете со строкой (т. Е. Какой функцией API вы используете), вашей операционной системой и, возможно, файловой системой, даже драйвером для устройства файловой системы. Вы должны предоставить дополнительную информацию. Символы ASCII в диапазоне 32..126, как правило, довольно широко признаются и узнаваемы (32 - это пространство, а 127 часто выглядят так, как можно лучше избегать): но больше может быть законным в вашей конкретной среде.

3

Чтобы проверить, есть ли нелатинские символы, достаточно посмотреть, присутствует ли символ выше 128. Но помните, что смысл этих символов верхней границы не поддается обнаружению. Страницы кодов, введенные для всех разных языков. Для русского (кириллица) у вас есть, например, CP1251 (среди прочих). В этой кодовой странице символ 8Dh (141d) равен Ќ. Но в кодировке 1256 (арабский) это означает چ. Он имеет такое же значение, но значение другое!

Unicode «решает» эту проблему, потому что все символы имеют уникальное значение! (Поэтому размер не является точным 8 бит, но также может быть 16/32бит.

Первые 128 символов Unicode и ASCII матча для унаследованных причинам.

Читать эту 'The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)'

Смежные вопросы