Моя библиотека .NET должна преобразовывать строки в библиотеку C, которая ожидает текст, закодированный с использованием кодовой страницы ANSI системы по умолчанию. Поскольку .NET поддерживает Unicode, это позволяет пользователям передавать строку в библиотеку, которая не конвертируется должным образом в ANSI. Например, на английском компьютере «デ ス ク ト ッ プ» превратится в «?????» при передаче в библиотеку C.
Для решения этой проблемы я написал метод, который определяет, когда это произойдет, путем сравнения оригинальной строки со строкой, преобразованной с использованием кодовой страницы ANSI. Я хотел бы протестировать этот метод, но мне действительно нужна строка, которая гарантированно не будет кодируемой. Например, мы тестируем наш код на английском и японском компьютерах (среди других языков). Если я напишу тест, чтобы использовать приведенную выше строку на японском языке, тест завершится неудачно, когда японская система правильно закодирует строку. Я мог бы написать тест, чтобы проверить кодировку текущей системы, но тогда у меня возникает кошмар обслуживания каждый раз, когда мы добавляем / удаляем новый язык.
Есть ли символ Unicode, который не кодируется с любой кодовой страницей ANSI? В противном случае, может ли строка быть составлена из символов из достаточно разных кодовых страниц, чтобы гарантировать сбой? Моя первая попытка состояла в том, чтобы использовать китайские иероглифы, поскольку мы не покрываем китайский, но, очевидно, японский язык может конвертировать китайские иероглифы, которые я пробовал.
edit Я собираюсь принять ответ, который пока предлагает грузинскую строку, но действительно ожидал результата с небольшим количеством символов из разных языков. Я не знаю, планируем ли мы поддерживать грузинский, так что пока все нормально. Теперь я должен проверить это на каждом языке. Радость!