Недопустимый символ в имени файла - PullRequest
0 голосов
/ 19 мая 2010

Во время процесса загрузки файла я обнаружил, что в Таблице сохранен недопустимый символ. zurück.pdf , C _Word.doc были именами файлов. Здесь ü , пространство между C и _Word было найдено как ? в столбце таблицы. Я проверил имя файла на стороне клиента, заменив не-буквенные числовые значения на _ (подчеркивание), но все равно он экранируется и сохраняется в БД. Как они могут обрабатываться на стороне клиента?

Ответы [ 3 ]

3 голосов
/ 19 мая 2010

Как носитель немецкого языка, я могу заверить вас, что ни 'ü', ни '' не являются недопустимыми символами.

Какую кодировку символов использует ваша таблица данных и что вы делаете на стороне клиента, чтобы гарантировать, что все символы попадают в допустимый диапазон?

Если ваша база данных поддерживает только символы ASCII (и не может быть изменена), то вы должны использовать System.Text.ASCIIEncoding , который заменяет все символы, не входящие в ASCII, на «?» для тебя.

Еще лучше, избегайте символов Unicode и представляйте их некоторым образом, который совместим с набором символов ASCII, например, используйте '\ u9404', чтобы представить символ Unicode 9404, см. RFC5137 для некоторых методов сделать это и прочитать ответы на Преобразовать строку Unicode в экранированную строку ASCII .

1 голос
/ 19 мая 2010

Я согласен с Себастьян - проблема не в том, что это недопустимые символы для имени файла, а в том, что они не являются допустимыми символами для используемой вами базы данных. Предполагая, что в качестве базы данных используется SQL Server, попробуйте изменить тип данных столбца на nchar, nvarchar или ntext, если в данный момент используется тип char, varchar или text.

0 голосов
/ 19 мая 2010

Вы можете использовать CustomValidator с вызовом System.IO.Path.GetInvalidFileNameChars() или преобразовать его результат в регулярное выражение для проверки на стороне клиента с помощью RegulaExpressionValidator.

...