То, что пишет Мартин, верно:
Это должно работать нормально, если вы когда-либо
обрабатывать строки как капли. Когда ты начнешь
доступ к ним "char-by-char" (т.е.
побайтово), все может пойти не так
если вы предполагаете, что символ C является полным
charater. Точно так же, если вы предполагаете, что вы
может разбить строку в середине
на две подстроки, это может пойти
неправильно и т. д.
Но это хуже, чем это. Выполнение в японской или китайской системе просто увеличивает вероятность , что ваш код встретится с многобайтовым (не ASCII) текстом. Даже при работе в системе английского языка США (самый простой случай) вполне возможно, что ваш код встретится с многобайтовым (не ASCII) текстом. Не думайте, что строки, используемые в пользовательском интерфейсе по умолчанию, являются пределом того, с чем вы можете столкнуться.
Также обратите внимание, что преобразование вашего проекта в Unicode (как его называет Microsoft) не поможет, потому что Microsoft выбирает кодировку Unicode UTF-16, с которой возникают похожие проблемы (реже). (В UTF-16 термин, который нужно искать, это «суррогатная пара».)
Обработка текста затруднена. Пойдем по магазинам!