ASP.NET/SQLServer - сохраняет имена файлов со специальными символами, преобразует сохраненные имена файлов ... почему? - PullRequest
0 голосов
/ 09 ноября 2011

У меня странная проблема.У меня есть приложение ASP.NET, которое хранит файлы.У меня есть таблица (SQL 2008 R2), где я храню информацию о файлах для файлов, которые были загружены моими пользователями.

Время от времени, когда я сохраняю имя файла от международного пользователя со специальным символом, имяпреобразуется при сохранении в таблице базы данных: Пример исходного имени файла: Łinename.mov Сохраненное имя файла: Linename.mov

Когда я получаю имя файла для построения строки пути / файла, имена не совпадают, а мой файлне найден.

В таблице хранится имя файла как nvarchar, и я подумал, что это позволит использовать символы Юникода.

Есть идеи?Я бы предпочел сохранить исходное имя файла, а не переименовывать файл на сервере.

РЕДАКТИРОВАТЬ: Я думаю, что проблема заключается в том, что рассматриваемый символ не входит в набор символов UTF-8.Я решил эту проблему, сохранив простоту своей жизни: я поддерживаю UTF-8, и если файл преобразуется при сохранении в формате UTF-8, это имя моего сервера.

1 Ответ

1 голос
/ 09 ноября 2011

NVARCHAR разрешает Unicode, но вы не сказали, как выполняются вставки в базу данных - вполне возможно, что перевод не происходит на SQL Server, а происходит в приложении ASP.NET.

Запустите SQL Profiler для базы данных и попытайтесь сохранить файл с не-ASCII-символом и посмотрите, что на самом деле выполняется для базы данных. Если Profiler показывает переведенное имя, то проблема в ASP.NET. В противном случае SQL Server делает что-то странное.

Отметьте это, а затем отредактируйте свой вопрос, чтобы сообщить о результатах.

...