2009-10-29 4 views
0

사용자가 양식 필드를 검색하기 위해 텍스트를 입력 할 수있는 다국어 사이트가 있지만 텍스트가 Javascript를 통해 백엔드로 이동하기 전에 이동합니다 .Firefox 및 IE에서 특수 문자 사용 브라우저에 따라 다르게 인코딩 됨

"欢"와 같은 특수 문자가 Firefox에서는 제대로 처리되지만 IE의 어떤 버전에서는 올바르게 처리되지 않습니다.

누군가가 나를 어떻게 이해할 수 있습니까?

감사합니다.

+0

IE에서 작동하지 않는 기능은 무엇입니까? 뒤로 물러서지 않고 있습니까 (문자가 삭제됩니다) 아니면 예상치 못한 것으로 바뀌 었습니까? –

답변

0

문자와 페이지가 모두 UTF-8 인코딩을 사용하는지 확인하십시오.

1

일부 브라우저는 기본적으로 다르게 인코딩 할 때 메타 태그를 사용하여 강제로 사이트의 기본 인코딩을 설정합니다. 다음과 같이 :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

UTF-8은 사용자가 찾고자하는 것이 아니지만 가능성이 가장 높습니다. 테스팅, firefox에서보기 -> 문자 인코딩으로 가서 수동으로 설정하십시오. 어느 것이 작동하는지 알면 어떤 것을 설정할 지 알 수 있습니다. 여기 스키마의 목록 : 여기 http://tlt.its.psu.edu/suggestions/international/web/tips/declare.html 및 더 많은 : http://tlt.its.psu.edu/suggestions/international/bylanguage/index.html

2

당신은 유용한 양식에 accept-charset 속성을 추가 찾을 수 있습니다. 이것은 서버가 받아들이는 문자 세트를 브라우저에 지정합니다. 당신의 JS는 이것을 따라야하며 그 형식으로 보내야합니다.

IE는 문자 인코딩을 처리하는 방식에 영향을 줄 수있는 몇 가지 다른 것들 :

  • 올바른 문서 타입 (즉, 표준 대 "준수"모드)를 지정합니다.
  • Content-Type 헤더가 서버에 의해 전송되었습니다. 나는 대부분의 브라우저가 메타 태그보다 헤더에 붙어 있다고 믿는다. 따라서 서버가 ISO-8859-1을 지정하고 페이지에 UTF-8을 지정하면 혼란이있을 것이다.
  • Content-Type 헤더의 형식. 일부 "최신"브라우저 (특히 FF)는 utf8을 utf-8의 별칭으로 사용합니다. IE는 ISO-8859-1로 넘어 가지 않습니다. (이것은 고통스런 개인 경험에서 비롯된 것입니다!)

문자 세트는 진정한 고통입니다. 모든 구성 요소가 동일한 "언어"앞뒤로 이야기하고 있는지 확인해야합니다.이 두 언어 모두 저장 통신을 모두 포함합니다.

무슨 일이 일어나는지 추적하기위한 다음 단계는 서버 코드가 JS 요청에 대한 헤더를 로그하여 인코딩이 예상 한 것과 일치하는지 확인하는 것입니다.