2010-05-19 7 views
0

파일 업로드 과정에서 잘못된 문자가 테이블에 저장되는 것을 발견했습니다. zurück.pdf, C _Word.doc은 파일 이름입니다. 여기 ü 사이의 공백은 과 _Word 사이의 공백은 입니다. 테이블 열에. 클라이언트 측에서 영숫자가 아닌 값을 _ (밑줄)로 바꾸어 유효성을 검사했지만 여전히 이스케이프하고 DB에 유지됩니다. 클라이언트 측에서 어떻게 처리 할 수 ​​있습니까?파일 이름에 잘못된 문자가 있음

답변

3

네이티브 독일어 사용자로서 'ü'도 '불법'도 아니란 점을 확신 할 수 있습니다.

데이터 테이블에서 사용하는 문자 인코딩은 무엇이며 클라이언트 측에서 어떤 문자를 사용하여 모든 문자가 유효한 범위 내에 있음을 보장합니까?

데이터베이스가 ASCII 문자 만 지원하고 변경할 수없는 경우 System.Text.ASCIIEncoding을 사용해야하며 모든 비 ASCII 문자가 '?'로 바뀝니다. 너를 위해서.

더 나은 방법은 유니 코드 문자를 이스케이프하고 유니 코드 문자 9404를 나타내는 '\ u9404'와 같은 ASCII 문자 세트와 호환되는 방법으로 표현하는 것입니다.이 작업의 일부 방법은 RFC5137을 참조하십시오. Convert a Unicode string to an escaped ASCII string에 대한 답변

0

을 사용하여 System.IO.Path.GetInvalidFileNameChars()으로 전화를 걸거나 그 결과를 정규식으로 변환하여 클라이언트 측 유효성 검사를 RegulaExpressionValidator으로 할 수 있습니다.

1

나는 Sebastian에 동의합니다. 파일 이름에 잘못된 문자가 있지만 사용중인 데이터베이스의 문자가 올바르지 않은 것이 문제입니다. 데이터베이스가 SQL Server라고 가정하면 열 데이터 유형을 nchar, nvarchar 또는 ntext로 변경하십시오 (현재 char, varchar 또는 text 중 하나 인 경우).

관련 문제