2013-01-07 3 views
0

악센트 부호가있는 문자가 포함 된 문자열에 Directory.Exists()을 사용하는 데 문제가 있습니다.디렉터리 이름에 악센트 부호가있는 문자를 처리하는 방법

디렉토리 경로는 D:\ést_test\scenery입니다. 내가 구문 분석하고 파일에 간단한 문자열로오고있다 :

[Area.121] 
Title=ést_test 
local=D:\AITests\ést_test 
Layer=121 
Active=FALSE 
Required=FALSE 

내 코드가 로컬 값을 복용하고 그것에 \scenery을 추가하고있다. 이 테스트가 존재하는지 테스트해야하며 다음을 사용하면됩니다.

if (!Directory.Exists(area.Path)) 
      { 
       // some handling code 
       area.AreaIsValid = false; 
      } 

false를 반환합니다. 내가하고있는 문자열 처리가 악센트 부호가있는 문자를 대체하는 것 같습니다.

enter image description here

그래서 것 같다 :이 보여주는

enter image description here

그리고 표시와 경고 메시지 : VS2012의 텍스트 시각화이 표시되어 (directoryManager은 System.IO.Directory 주위에 랩입니다) 악센트 부호가있는 문자가 인식되지 않습니다. 이 문제를 검색하는 것은 주로 강조 표시된 문자를 제거하거나 대체하는 것과 관련이 있습니다. 현재 '정상적인'문자열 처리를 사용하고 있습니다. 내가 FileInfo를 사용하여 시도했지만 경로가 어쨌든 맹 글링받을 것 같습니다.

그래서 내 첫번째 질문은 Directory.Exists 테스트를 통과 할 수 있도록 문자열을 경로에 저장하는 방법입니까?

이렇게하면 경로 이름에 비 라틴 문자가 더 많이 포함될 수 있습니다. 전 세계의 사용자가있어 아랍어를 볼 수 있습니다. 러시아어, 중국어 등등. 이 모든 것을 어떻게 처리 할 수 ​​있습니까?

+0

대개 INI 구문 분석 코드가 utf8 파일을 ASCII (또는 이와 비슷한 형식)로 열 때 worng입니다. –

답변

5

문제는 거의 확실합니다. 인코딩이 잘못된 파일입니다. 파일 이름이라는 사실은 부적절합니다. 스크린 샷을 보면 Directory.Exists으로 전화하기 전에 관련 데이터를 잃어버린 것으로 나타났습니다.

파일 인코딩 (예 : UTF-8, Cp1252 등)을 알고 있는지 확인하고 파일을로드하는 중에 인수로 전달해야합니다 (예 : File.ReadAllText). 이 정보만으로는 충분하지 않은 경우 파일 인코딩 (인코딩 방법 알아보기)과 코드 (읽는 방법)에 대해 자세히 알려줘야합니다.

올바른 데이터를로드하면 파일 모양이 자동으로 처리된다는 것을 으로 보았습니다.

+0

고마워요 존 .............. – ScruffyDuck

관련 문제