Я использую SQL Server CE 3.5 в режиме DirectTable.
Давайте определим уникальность символов. Два символа равны, если они абсолютно одинаковы (например, «а» и «а»). Такие символы как «А» и «а» не равны. Две строки равны, если они состоят из одинаковых символов в одном и том же порядке, поэтому, например, «foo» НЕ равно «ofo» или «Foo».
Теперь, пожалуйста, обратите внимание, мне все равно, что говорит комитет ISO, мне нужно такое очень точное соответствие. Целью является хранение многоязычных текстов (слов) в базе данных.
ВОПРОС - вопрос, как это сделать? Я ничего не знаю заранее о языке, один пользователь может хранить слова только из польского словаря, а другой может хранить слова из нескольких языков одновременно (и это верно).
Если вы думаете, что эта проблема тривиальна, вы ошибаетесь. Я уже обнаружил, что SQL Server CE обрабатывает двойные 's' так же, как одиночные символы 'ß', что совершенно неприемлемо. Я нашел некоторые обходные пути, которые вызывают сравнение при сравнении, но я не могу их использовать:
- они принимают запросы SQL, для меня это не пойдет, это замедлит меня
- они заранее предполагают, что проблема с немецким языком, я не могу предположить, что такое
Я ищу в базе данных, но не использую упорядочение, поэтому мне все равно, в порядке ли отображение всей таблицы со словами в «правильном» порядке или нет. Все, что меня волнует, когда я ищу текст в таблице, я получаю совпадение, если слова ДЕЙСТВИТЕЛЬНО равны, не похожи.
Обход
Поскольку для текущего проекта мне требовалось рабочее решение для «вчера», я сохранял текстовые строковые поля в базе данных без каких-либо изменений, но при чтении я конвертировал их из base64 в utf8, а при записи - наоборот. Немного излишне для места, но я могу с этим смириться, и для того, что важно при включенной чувствительности к регистру, я полностью независим от реализации сравнения MS, сопоставлений и т. Д. Каждый отдельный символ Unicode кодируется по-разному.
Я все уши для более элегантного решения (если таковое существует).