Как получить данные Unicode, хранящиеся непосредственно в поле, отличном от Unicode, в формате varchar на сервере SQL - PullRequest
0 голосов
/ 27 апреля 2010

Мне нужно создать приложение C #, которое отображает данные Unicode в текстовом поле.

Но в хранилище столбцов SQL-сервера есть данные varchar, которые содержат данные Unicode. Но поскольку varchar не основан на юникоде, он отображает строки символов, такие как «????????».

Что ж, проблема, с которой я сталкиваюсь, заключается в том, что я не могу изменить тип столбца, поскольку на нем запущено другое зависимое приложение.

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Вы не можете хранить данные Unicode в varchar без преобразования в сопоставление столбца. Таким образом, то, что было Unicode, будет закодировано совершенно иначе, когда оно будет сохранено в столбце varchar и, вероятно, потеряно. Если вы видите ?????, то это означает, что кодировке не удалось найти символ, который сопоставляется со значением ANSI, когда он хранился, и вместо этого он сохранил знак вопроса. Если вы хотите сохранить Unicode в базе данных, правильным решением будет изменить тип данных столбца. Если вы не можете изменить тип данных столбца, добавьте столбец с значением nvarchar и убедитесь, что источники Unicode читают и записывают в этот столбец.

0 голосов
/ 27 апреля 2010

Вы можете попробовать прочитать данные, приведенные как varbinary (...) с сервера SQL, а затем создать свой собственный StreamReader в C #, указав кодировку. Вам нужно знать, как кодируются данные, поскольку в .NET доступно 5 стандартных кодировок Unicode.

...