2009-03-15 6 views
1
내 웹 애플리케이션에 특정 입력을 보장 할

는 아스키 (이 태그에 대한 그리고 내가 대신 NVARCHAR의 VARCHAR 사용하여 데이터베이스 열에서 공간을 절약하기 위해 노력하고있어)ASCII 값을 확인

을로 표현 할 수있는 문자 만 포함 .net에서이를 수행 할 수있는 프레임 워크 기능이 있습니까? 아니면 문자 코드가 올바른 범위에 있는지 확인하기 위해 문자 코드를 하나씩 확인해야합니까?

편집 : 방금이 확장 방법을 작성했으나 너무 단순합니다.

public static bool IsAscii(this string value) 
{ 
    if (value != null) 
     for (int current = 0; current < value.Length; current++) 
     { 
      if ((int)value[current] > 127) 
       return false; 
     } 

    return true; 
} 
+0

이것은 영어가 아닌 태그에 매우 비합리적입니다. –

+0

언어 관련 문제가 있습니다. ok –

답변

2

확장 방법을 사용하고 있다면 아마도 C# 3과 .NET 3.5를 사용하고있을 것입니다. 이 경우 내가 사용하는 것 : 이것은 모든 문자 범위에 있는지 확인합니다

using System.Linq; 

... 

public static bool IsPrintableAscii(this string value) 
{ 
    return value != null && value.All(c => c >= 32 && c < 127); 
} 

[U + 0020-U + 007E] 인쇄 가능한 문자가 포함되어 있습니다. 그게 네가 쫓아 온거야?

기타 의견에 말했듯이 악센트 등을 모두 배제합니다. 괜찮습니까? 또한 캐리지 리턴, 줄 바꿈 및 탭을 거부합니다. 다시, 그건 괜찮은가요?

1

당신은 확실히 모든 것을 만들 것 System.Text.ASCIIEncoding를 통해 텍스트를 실행할 수는 ASCII입니다 (A로 변환됩니다 ASCII 문자에 매핑되지 않는 문자 '?').

+0

그래, 물음표가 슬러그에 속하지 않기 때문에 슬러그 법으로 제 목적을 달성 할 수있었습니다. 내가 실제로 물음표를 허용한다면 그렇게 유리하지 않을 것이다. –

+0

뭔가 순수 ASCII로 변환하려면 (그리고 잘못된 정보를 잃어 버리면) 또는 순수 ASCII가 아닌 것을 확인하고 거부하고 싶은 경우에 따라 달라질 것입니다. –

+0

@Michael이 유효성 검사를 거부하고 내 생각을이 목적으로 사용했습니다. –

0

당신의 솔루션에서 볼 수있는 문제는 당신이 원하지 않는 ASCII 문자로 알려줄 것입니다. 또한 지원되는 다른 언어가 악센트 부호가있는 문자를 저장할 수 있으면 좋을 수도있는 확장 ASCII 코드를 제외 할 것입니다.