2012-10-23 10 views
0

내 콘텐츠에 여러 BOM (EF BB BF) 문자가 포함되어있어이를 제거하고 싶습니다. 문자는 문자열의 중간에 있습니다. 단순히 모두 제거하고 싶습니다.AJAX 게시 문자열에서 BOM 문자 제거

데이터는 CKEditor 인스턴스에서 가져온 JavaScript 소스에서 가져온 것입니다. 그런 다음 변수를 POST하고 백엔드에서 문자열로 읽고 BOMS를 읽습니다. 지금은 그대로 유지되지만 문자가 해석되어 중간 내용을 표시하기 시작하면 사후 처리에 오류가 발생합니다. 나는 그들이 내 CKEditor에 복제 된 어떤 것으로부터 왔다고 의심한다.

char에 의해 char을 처리 할 수 ​​있지만 BOM과 비교하는 방법을 모르겠습니다. 어떻게 든 문자열 바이트의 16 진수 값을 비교하고 3 바이트 시퀀스를 비교할 수 있습니까?

답변

4

가 UTF-8 BOM은 \ufeff로 번역 얻을 바이트. 유니 코드 문자 "제로 너비의 끊기지 않는 공간"은 볼 수 없으며들을 수 없습니다. 그들을 밖으로 필터링 :

+0

대성공! 하나의 질문이지만 동일한 유니 코드 문자로 변환되는 다른 바이트를 제거하면 문제가 발생할 수 있습니까? 나는 그들이 제거 될 경우에 나는 놓칠 것이라는 점을 의심하지만, 다른 중요한 또는 가치있는 언급을하는 그런 등장 인물이 있습니까? – Nenotlep

+1

당신은 그들을 볼 수 없으며, 당신은 그들을들을 수 없습니다. –

0

는 다음과 같은 시도 :

CleanString = DirtyString.Replace("\u00EF\u00BB\u00BF", null); 
+0

내가 이것을 테스트 한 방법은'string s2 = s.Replace (...)'그리고 나서'Debug.WriteLine (s2);'를하는 것이었다. 그런 다음 출력 창에서 출력물을 복사하여 메모장 + +에 복사 한 후 16 진수보기로 전환했습니다. 여전히 BOM이 표시됩니다. 내가 잘못 했니? – Nenotlep

+0

그것이 나를 위해 일하는 방법입니다. 아마도 [this] (http://stackoverflow.com/questions/2502990/create-text-file-without-bom?rq=1)가 도움이 될 것입니다. –