2010-04-23 14 views
1

파일에서 클라이언트가 저에게 보내 자사의 레이아웃 파일을 특수 문자를 제거하고 난 구문 분석 그것은 AS400 서버에 파일을 보낼 수 있지만 모든 특수 문자를 제거해야합니다.</p> <p>... 나는 TEXTFILE를 열고 N N 'A I 등 모든 특수 문자를 제거하기 위해 노력하고있어

문제가 : 일부 특수 문자와

일부 파일 내가 C#에서 그것을 열 때 특수 문자 및 두 개의 서로 다른 문자를 읽고 오른쪽으로 전체 라인을 한 공간을 이동하고 있습니다 다음 정보 그 위치에 있으면 괜찮아 질 것입니다.

내가 같은 파일을 메모장에서 열어 파일은 OK입니다하지만 난 워드 패드에서 열 때 예 (단지 1 특별한 문자에 대한) 2 개 문자처럼 보이는 : 파일에 내가있다 :

"0001 0003JUAN PEÑA33441JPENATEST"

그러나 C#에서 그것은

"0001 0003JUAN PEï░A33441JPENATEST"인코딩을 이용

IM을 도시 1,251

어떤 도움이 필요합니까?

+0

클라이언트가 1251로 인코딩하여 파일을 보내야합니까? 그렇다면 그들은 그렇게하고 있습니까? – AlG

+0

귀하의 질문이 무엇인지 잘 모르겠습니다. 메모장이나 워드 패드에서 지원되는 인코딩 유형을 모르지만 이러한 응용 프로그램이 파일을 표시하는 방식이 중요하지 않을 수 있습니다. "하지만 C#에서는 보여줍니다 ..."라는 의미는 무엇입니까? Visual Studio에서 하시겠습니까? –

답변

0

당신은이 문제가 : 파일을 읽고 문자를 제거.

당신은 기록 인코딩에서 파일을 읽을 필요가 :

private static string CHAR_REPLACE_SRC = "áàãâÁÀÃÂéèêÉÈEíìîÍÌÎóòõôÓÒÕÔúùûÚÙÛçÇñÑ"; 
private static string CHAR_REPLACE_DST = "aaaaAAAAeeeEEEiiiIIIooooOOOOuuuUUUccnN"; 


private static string GetCleanString (string src) 
{ 
    int i = 0; 
    while (i < src.Length) 
    { 
     if (src[i] < 32 || src[i] > 127) 
     { 
      int pos = CHAR_REPLACE_SRC.IndexOf(src[i]); 
      if (pos >= 0) 
       src = src.Replace(CHAR_REPLACE_SRC[pos], CHAR_REPLACE_DST[pos]); 
      else 
       src = src.Remove(i, 1); 
     } 
     else 
      i++; 
    } 
    return src.Replace("\"", "").Replace("?", "").Replace(":", "").Replace("&", "_").Replace("\\", "_").Replace("/", "_"); 
} 
다음 문자를 제거하려면

StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding("YOUR FILE ENCODING")); 

을, 당신은 여기에 ... 손으로 그것을 할 시도 할 수있는 것은 코드입니다

아마도 약간의 수정 작업이 필요할 것입니다. 이 URL을 사용하여 페이지 제목에서 깨끗한 URL을 만듭니다.

관련 문제