Base64 유효하지 않은 문자 오류가 계속 발생합니다.Base64 String throwing invalid character 오류
프로그램은 XML 파일을 가져 와서 문서로 내 보냅니다. 사용자가 원하면 파일을 압축합니다. 압축이 잘 작동하고 UTF-8로 인코딩되고 파일에 기록되는 Base64 String을 반환합니다.
내가 그것의 압축 여부를 확인해야하는 프로그램으로 문서를 다시로드의 시간이 코드는 단순히 경우 :byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray());
그것은이 GZip으로 압축 코드가 있는지 확인하기 위해 문자열의 시작을 확인 그 안에.
이제 모든 테스트가 작동합니다. 나는 문자열을 가져 와서 압축하고, 압축을 풀고 원본과 비교합니다. 문제는 ADO 레코드 집합에서 반환 된 문자열을 가져올 때입니다. 문자열은 파일에 쓰여진 것과 똑같습니다. (끝에 "\ 0"이 추가되었지만, 아무 것도하지 않더라도 여전히 찢어져 버린다고 생각합니다.) 나는 심지어 전체 문자열을 복사하여 테스트 방법에 붙여 넣고 압축/압축 해제합니다. 잘 작동합니다.
테스트는 통과하지만 코드는 똑같은 문자열을 사용하여 실패 할 것입니까? 유일한 차이점은 일반 문자열을 선언하고 그것을 전달하는 대신 레코드 세트에서 하나를 반환하는 것입니다.
내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?
Convert.FromBase64String에 전달하는 문자열의 예를 게시하면 도움이 될 것입니다 (예 : 호출하기 전에 Debug.Write를 직접 입력하면 출력되는 결과) –
... even 첫 번째와 마지막 8 바이트 또는 문자열 길이를 게시 한 경우 해당 문자열이 올바른 형식인지 확인하기에 충분할 것입니다. –
qGcAAB + LCA ... cAAA == 길이는 2376 자입니다. – Brandon