2013-06-03 4 views
2

asp.net 웹 사이트에서 사용자가 파일 이름에 emdash가 포함 된 전자 메일 첨부 파일을 업로드하려고했습니다. (Exchange 서버) 이메일 첨부 파일로이를 보낼 때 파일이 * ** * 그래서파일 이름에서 ASCII가 아닌 문자를 테스트하는 방법

.DAT _utf8_B_ 로 변환있어하는 .aspx 페이지에, 나는 경우 감지 할 수 있어야합니다 emdash는 Request.Files 콜렉션의 일부로 업로드 된 파일의 파일 이름에 있습니다.

string s = "a—b-"; 

byte[] arr = Encoding.ASCII.GetBytes(s); 
foreach (byte element in arr) 
{ 
    Response.Write(element.ToString() + ","); 
} 

위의 문자열에는 두 번째 문자로 emdash가 있고 네 번째 문자로 일반 하이픈이 있습니다.

위의 코드는 97,63,97,45를 화면에 인쇄합니다.

emdash가 유효한 ASCII 문자가 아니므로 오류가 발생하거나 유효한 ASCII 문자가 아닌 것으로 표시됩니다. 그럼에도 불구하고 63을 반환합니다.

'파일 이름에 잘못된 문자가 있습니다'라는 사용자에게 말할 수 있도록 파일 이름에서 emdash를 어떻게 검색 할 수 있습니까? 나는이 문제에 관해 다른 질문을 보았고, 나는 그 문제를 해결할 수 없다. 내가 Encoding.ASCII.GetBytes은 당신이 전화를 할 때 비 ASCII 문자를 참조해서는 안됩니다 그래서 먼저 ASCII로 변환 있다고 생각

foreach (char c in s) { 
     if (c >= 128) { 
      Response.Write("Non-ascii char detected: {0}", c); 
     } 
    } 

:

+2

http://www.asciitable.com/에서 63이 물음표 값임을 알 수 있습니다. ASCII.GetBytes를 호출하면 문자를 ASCII로 강제 변환하고 문자를 변환 할 수 없을 때 물음표를 사용합니다. – David

답변

관련 문제