Хотя MS SQL и бесполезно поддерживает обе кодовые страницы и Unicode, он не предоставляет никаких функций для преобразования между ними, поэтому выяснение того, какой символ представлен значением в другой кодовой странице, является свиньей.
Есть два потенциальных метода обработки конверсий, один из которых подробно описан здесь.
http://www.codeguru.com/cpp/data/data-misc/values/article.php/c4571
и включает в себя прикрепление пользовательской программы преобразования к базе данных и использование ее для преобразований.
Другой состоит в создании таблицы БД, состоящей из
[CodePage], [ANSI Value], [UnicodeValue]
со значением Unicode, хранящимся как int, представляющий символ Unicode для преобразования с использованием nchar()
, так и сам nchar
Вы используете сопоставление SQL_Ukrainian_CP1251_CS_AS
, которое является кодовой страницей 1251 (CP1251 от центра строки). Вы можете взять его таблицу перевода здесь http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
Это TSV, поэтому после обрезки вершины необработанные данные должны импортироваться довольно аккуратно.
Лично я бы больше склонялся к последнему, чем к первому, особенно для производственного сервера, поскольку первый может привести к нестабильности.