2014-04-06 2 views
-2

나 자신에게 보조 소프트웨어를 만들고 싶습니다.
처음에이 소프트웨어는 입력 텍스트가 영어인지 또는 일본어 또는 아랍어와 같은 유니 코드 텍스트인지를 알아야합니다.
이제는 문자 또는 텍스트를 정의하는 방법이 C#에서 유니 코드인지 알 필요가 있습니까?
팁을 주시면 감사하겠습니다.거기에 숯불 또는 텍스트를 정의하는 방법은 유니 코드 또는 C# 아닌가요?


-------------------------
업데이트는 내 질문에 ...
--------- ----------------
사전을 사용하여 텍스트의 의미를 인식하고 싶지 않습니다. varchar와 nvarchar 사이에 SQL Server 데이터 유형과 같은 데이터 유형을 정의해야합니다. 예를 들어 입력이 a, b, c, ..., z와 같은 영어 문자 인 경우 입력이 varchar이므로 else는 nvarchar입니다. 어떤 편지를 발견, 그래서 만약

*** 내 솔루션은 영어 아스키 코드에없는 모든 문자를 찾기 위해 입력 텍스트를 케이스를 전환하고 전체 검색되어 사용되어, 입력 타입은 NVARCHAR이다


이 솔루션이 맞습니까?

+0

질문이 무엇인지 알기가 어렵습니다. 당신이 묻고있는 것을 분명하게하기 위해 좀 더 많은 일을해야한다고 생각합니다. –

답변

0

의 모든 텍스트는 정의에 따라 유니 코드입니다. 유니 코드는 영어를 포함한 모든 언어를 지원합니다.

문자열에서 대부분의 문자 (예 :> 60 %)에 대해 문자 코드가 ~ 256 이하인지 확인하면 이렇게하면 라틴어를 찾는 데 유익한 방법이됩니다. 프랑스어 또는 독일어와 같이 영어 이외의 언어를 감지해야하는 경우 something a bit more complex like a stemmer 또는 사전 인식을 참조하여 텍스트에서 영어로 표시되는 단어를 찾아야합니다.

1

Matthew가 말했듯이, 내장 된 함수 나 메서드는 사용할 수 없습니다. 그러나 입력 텍스트가 너무 크지 않으면 단어의 문자를 반복하여 적어도 하나의 유니 코드 문자가 포함되어 있는지 알아볼 수 있습니다.

private bool IsUnicode(string text) 
{ 
    char[] _charArray = text.ToCharArray(); 
    bool _unicodeFlag = false; 

    for(int _index=0; _index<_charArray.Length-1 && !_unicodeFlag; _index++) 
    { 
     if (((int)_charArray[_index]) > 255) 
      _unicodeFlag = true; 
    } 
    return _unicodeFlag; 
} 
+0

* C#에서 문자열에있는 모든 * 문자는 * 정의에 따라 * 유니 코드 문자입니다. 유니 코드는 ASCII의 엄격한 상위 집합 인 라틴어 1의 엄격한 상위 집합입니다. – Joey

+0

해결책 감사합니다. 그렇지만 textchange 이벤트의 모든 입력을 확인하는 방법은 무엇입니까? –

+0

텍스트 상자의 keydown 또는 keypress 이벤트에서 이것을 호출하면 지나치게 반복되거나 리소스가 낭비됩니다. 예 : Apple이라는 단어에 대해 ** A **, ** Ap **, ** App **, ** Appl ** 및 ** Apple **을 확인합니다. 실제 데이터 유형을 지정할 때 최종 함수에서 사용하는 것이 좋습니다. – athar13