2011-03-14 8 views
1

URL에 IE와 함께 이상한 문제가 있습니다. URL에 시나리오를 전달하면 작동하지 않으며 다른 브라우저에서 완벽하게 작동하는 것 같습니다. ?Javascript에서 악센트 부호로 된 URL로 인코딩하는 방법은 무엇입니까?

는 IE의 URL과 같이 온다 :

: 파이어 폭스 URL에서

a9nario

.../search.aspx 키워드 = SC % C3 % 83 % C2 %의은으로 온다

.../search.aspx? keyword = sc % C3 % A9nario

IE에서 URL이 깨지고 Firefox가 제대로 작동합니다. IE에서이 문제를 처리하기 위해 URL 디코딩을해야합니까?

+0

URL에 어떻게 전달합니까? – Gumbo

답변

2

문자열을 "전달한"방법을 언급하지 않았지만, 나는 무슨 일이 일어 났는지 말할 수 있습니다.

문자 é에는 코드 포인트 E9가 있습니다. UTF-8에서는 2 바이트로 인코딩됩니다. C3 A9. 그래서 URL에서 "시나리오"를 표시하는 올바른 방법은이 문자열을 가져다가 각각의 바이트를 쳐다 보면서 그들은 문자를했다 가정하고, UTF-8 인코딩 A를 한 경우에 무슨 일이 일어날 지, 지금

sc%C3%A9nario 

입니다 두 번째로? 어떤 일이 일어날 것은

  • s입니다 ->의
  • C -> C
  • C3가에 UTF-8 C3 83 인 코드 포인트 C3, 즉,와 문자로 해석됩니다
  • 퍼센트
  • % A9는 코드 포인트 A9 인 char로 해석됩니다. 즉, U는 UTF-8에서 C2 A9입니다.
  • N -> N

이것은 당신이 IE에서 본 것과 정확히 일치한다. 이런 일이 어떻게이 질문에 충분한 배경이 아니었지만, 분명한 것은 어떻게 든, 문자열 "시나리오"는 UTF-8 바이트 문자열로 인코딩있어 것입니다 때문에 확실히 말할 수 없다 지금

다음 그것은 첫 번째 인코딩이 Windows-1252 또는 Latin-1 인코딩에서 문자열을 생성한다는 이상한 가정에 기반하여 다시으로 인코딩되었습니다.

문자열이 "두 번 인코딩 된"방법을 조사해야합니다.

관련 문제