2010-12-02 1 views
2

나는 아래 코드를 가지고 있는데, 동일한 요청을 두 번 이상 호출하면 이상한 일이지만 (심지어는 filename) 동일한 값을 반환합니다.나는 화가나요? C#/static 한정자

Ive가 코드를 단계적으로 수행하고 심지어 stringbytes도 똑같습니다 (즉, GetBytes (string))가 동일한 값을 반환합니다.

public static string Base64EncodeString(string filename) 
    { 
     var stringbytes = System.Text.Encoding.Default.GetBytes(filename); 
     return Convert.ToBase64String(stringbytes); 
    } 
+1

'stringbytes'가 동일하다면'filename'은 같습니다. 값을 콘솔에 인쇄하는 코드를 넣으십시오. –

+0

이렇게하면됩니다. 디버거에서보고 있습니까? 아마도 각 호출마다 filename과 base-64 문자열의 값을 기록하십시오. –

+3

@ 대니얼 : 그건 사실이 아니야. 'filename'의 몇몇 다른 값은 모두'Encoding.Default'에 의해 인코딩 될 수없는 문자를 가질 수 있습니다. 모두 '?'의 인코딩 된 형태로 대체 될 수 있습니다. :) –

답변

5

나는 당신이보고있는 것으로 보이지 않는다고 생각합니다. 그 방법 Encoding.Default에 의해 지원되지 않는 문자를 사용하지 않는 한은 filename의 다른 값을 사용하여 호출하면 같은 값을 반환하지 않습니다. 은 플랫폼 특정 인코딩이 필요하지 않는 한 Encoding.Default을 사용하지 않는 것이 좋습니다.

+0

+1 : 판금 특정 인코딩 – TalentTuner

1

코드가 올바르게 표시됩니다. Jon Skeet이 제안한 인코딩 문제가 아닌 경우 static fileName 및/또는 stringbytes 변수가 어딘가에 있으며 게시 된 코드가 원본 코드와 100 % 동일하지 않은 것으로 추측됩니다.

0

로드하는 파일을 확인 했습니까? 열려는 파일을 복사하고 다른 이름을 지정하고 내용을 수정하지 않았을 가능성이 있습니다.