2011-08-12 3 views
0

코드 프로젝트 파서가 here 인 코드 파일을 사용하여 일부 CSS 파일을 구문 분석하려고합니다. 기본적으로 ftp에서 css 파일을 가져 와서 문자열로 변환하고 구문 분석하여 CSS 클래스를 열거 할 수 있어야합니다. 기본 .net ftp 클라이언트를 사용하면 반환 된 문자열이 파서에서 올바르게 작동합니다. 우리가 프로젝트에서 사용하는 ftp 파서를 사용하면 실패합니다 (CuteFTP). 이것은 이상한 곳입니다. 문자열에서 반환 된 두 개의 css 파일이 동일하다는 것을 알 수 있었기 때문에 동일한 css 파일에서 나온 것입니다. 그렇다면 왜 하나는 작동하고 다른 하나는 실패합니다. 숨겨진 포맷이 있습니까? 두 개의 ftp 클라이언트가 모두 utf8 인코딩을 사용하고 있음을 확인했습니다. 다음은 문자열로 반환 된 두 개의 CSS 클래스입니다. here 문제를 보여주는 vs2010 프로젝트를 업로드했습니다. 어떤 도움이라도 대단히 감사 할 것입니다 ... 이것은 제가 저의 머리를 긁어 주었던 문제 중 하나입니다. 그래서 그것을 제거해야 다음 코드를 추가 한 문자열의 시작 부분에 UTF8 식별자가 같은 감사CSS 파싱 인코딩 문제가 있습니까?

string cssThatWorks = "\r\n.uploadfiles_button{\r\n color:#529214; \r\nborder:1px solid #C6D880;\r\ndisplay:inline-block;\r\n margin:0 7px 0 0;\r\n font-family:\"Lucida Grande\", Tahoma, Arial, Verdana, sans-serif;\r\n font-size:12px;\r\n line-height:130%;\r\n text-decoration:none;\r\n font-weight:bold;\r\n cursor:pointer;\r\n padding:5px 10px 6px 7px; \r\n}\r\n\r\n\r\n\r\n"; 

string cssThatFails = "\r\n.uploadfiles_button{\r\n color:#529214; \r\nborder:1px solid #C6D880;\r\ndisplay:inline-block;\r\n margin:0 7px 0 0;\r\n font-family:\"Lucida Grande\", Tahoma, Arial, Verdana, sans-serif;\r\n font-size:12px;\r\n line-height:130%;\r\n text-decoration:none;\r\n font-weight:bold;\r\n cursor:pointer;\r\n padding:5px 10px 6px 7px; \r\n}\r\n\r\n\r\n\r\n"; 

업데이트

것 같습니다. 생성자에게 전달 된 true는 건너 ​​뜁니다 만 그렇지 않습니다. 어떤 아이디어?

UTF8Encoding utf8 = new UTF8Encoding(true); 
    Byte[] encodedBytes = utf8.GetBytes(cssThatFails); 
    string cssWithoutUTF8Identifier = utf8.GetString(encodedBytes); 

답변

1

샘플 프로젝트의 Default.aspx.cs 파일을 TextPad에서 열고 '?' 문자 "cssThatFails"의 시작 부분에 알 수없는 문자를 나타내는 문자. 그래서 나는 VS의 바이너리 편집기에서 같은 파일을 열고 "cssThatFails"문자열에 UTF-8 바이트 순서 마커 (시작 부분 (0xEFBBBF))가 있음을 알았습니다. 그것이 범인 가능성이 있습니다.

+0

감사합니다. 첫 번째 문자를 제거하는 것 외에 다른 점은 어떻게 설명 할 수 있습니까? – NullReference

+0

C#의 모든 문자열은 메모리에서 UTF16으로 표시되므로 동등한 UTF16 BOM을 잘라내야합니다. 'string cssWithoutUTF8Identifier = cssThatFails.TrimStart (new char [] { '\ xFEFF', '\ xFFFE'}); ' – bbogovich

+0

해결책을 찾았습니다. http://stackoverflow.com/questions/1317700/strip-byte-order-mark -from-string-in-c – NullReference

관련 문제