2009-09-03 1 views
3

파운드 기호가 웹 페이지에 잘못 표시되거나 전혀 표시되지 않는 매우 이상한 문제가 있습니다.문자 인코딩 문제 - UTF-8 IE6/ASP/XML로 파운드 기호 (£)에서 이상한 동작

나는 새로운 IE (6) 창에 표시되기 전에 (잠시) XML에 저장되는 텍스트 상자에 텍스트를 입력하고 있습니다.

가장 나쁜 부분은 일관성이 없다는 것입니다. 나는 세 가지 일이 일어난다 :
1. 파운드 기호는 소스 코드에도 나타나지 않는다. (XML은 기본적으로 UTF-8을 사용하는 것처럼 보인다.)
2. 파운드 기호는 출처에는 있지만 웹 페이지에는 나타나지 않습니다.
3. 파운드 기호는 웹 페이지의 원본 AND FINE에 나타납니다 (일반적으로 이것이 처음 나타나는 경우).

이제는 더 큰 문제의 한 특정 부분 일뿐입니다. 나는 이것을 일반적으로보고 연구를 해왔다. 평범한 ASCII (ISO 8859-1 - Western Europe)와 UTF-8로 변환하면 기호가 무엇인지 전혀 모르고 완전히 제거된다. (이 경우에는 tho 나는 그것이 '?', 상자 또는 거꾸로 된 '?'로 대체 된 것을 보았습니다.).

파운드 기호를 UTF-8로 입력하고 다시 ISO 8859-1로 변환하면 파운드 기호 앞에 대문자 A (Â)가 붙습니다.

필자는 후자를 적어도 기본적인 수준에서 이해할 수 있습니다. 시스템 전체에 다른 문자 인코딩을 사용하여 파운드 기호를 저장하거나 저장해야하기 때문입니다. 우리 웹 페이지에 대한 인코딩 (적어도 일반적으로), 때로는 IE가 혼란스러워지고 올바르게 표시되지 않습니다.

내가 이해할 수없는 것은 위에서 설명한 일관성없는 결과입니다.

나는 초기 설명에서 다소 모호하다는 것을 알았지 만 간단한 설명을 쓰는 것이 내 생각을 똑바로 세우고 다른 사람들이 비슷한 문제를 이해하도록 도울 수 있기를 바랐다.

EDIT : 또한 HTML 엔티티 (& 파운드)에 대한 모든 파운드 기호를 교환 할 수 있음을 알았지 만, 시간이 많이 걸리고 지저분하다고 생각합니다. (오라클에 저장되어 나중에 PDF로 전달되는 경우 어떻게됩니까? , 엑셀, 등?).

분명히 어떤 조언이나 조언을 부탁드립니다!

감사합니다.

+0

서버 플랫폼 (있는 경우)? – AnthonyWJones

+0

Anthony에게 감사드립니다 : Windows 2003 Server – FrostbiteXIII

답변

2

나는 다음 새 IE (6) 창에 표시되기 전에 XML 에 저장 (간략하게) 도착 텍스트 상자에 텍스트를 키잉하고있다.

문제는이 순서에 포함되어있을 가능성이 큽니다. 이 순서가 어떻게 실현되는지 구체적으로 설명하면 도움이 될 것입니다.

이러한 종류의 문제의 가장 일반적인 원인은 클라이언트가 실제로 문자를 인코딩하는 것과 서버가 인코딩이 무엇이라고 생각하는지 사이의 이해가 일치하지 않는다는 것입니다. 가장 간단한 해결책은 accept-charset 속성을 게시물의 문자 인코딩을 명시 적으로 만드는 form 요소에 배치하는 것입니다.

stuff 필드에 게시 된 텍스트는 UTF-8로 인코딩됩니다.

일부 inconsitencies 그 이유는 다음과 같습니다 -

  1. 것이 가능 브라우저에 그 같은 문자를 전송하면 손상을 역 때 서버가 잘못하지만 다음 dB의 문자를 코딩 할 수 있다는 것을 잘 봐 다시 브라우저에서.
  2. ISO-8859-1은 다른 장소에서 다른 것을 의미합니다. IE6는 그 문자셋으로 다소 느슨한 것이고, 실제로는 Windows-1252와 같이 취급 될 것입니다. 다른 응용 프로그램은 ISO-8859-1에 sctricter 해석을 적용합니다.
+0

Anthony에게 고맙다. 이와 관련없는 여러 가지 문제에 계속 집중하라. 실제로, 나는 이것에 대해 조사를 멈추고, 검색을하고 html 엔티티 (£)에 대한 파운드 기호를 바꿔야 할 것입니다 ... 내가 올 때 게시물을 업데이트 할 것입니다 또한, 자세한 답장을 보내 주시면 고맙겠습니다. (15 명이있을 때까지 응답하지 않습니다. – FrostbiteXIII

+0

@FrostbiteXIII, 어쨌든 당신을위한 theres 10;). – AnthonyWJones

+0

감사합니다 (위선적 인 말로 15자를 넘기지 않고 감사를 표시 할 수는 없습니다.)! :) – FrostbiteXIII

0

사이트에서 항상 어떤 문자 인코딩이 사용되고 있는지를 말하는 것은 아닙니다. 이 경우 브라우저는 추측해야합니다. 그리고 그들은 서로 다른 페이지에서 다르게 추측 할 수 있습니다. 이는 왜 일관성이 없는지에 대한 이유 일 가능성이 큽니다.

많은 문자 인코딩은 "ASCII plus"(ASCII와 확장 된 라틴 문자, ASCII와 그리스 알파벳, ASCII와 키릴 문자 등)입니다. 브라우저는 의도 된 것을 어떻게 알 수 있습니까? 한 가지 방법은 코드 포인트 빈도를 살펴 보는 것입니다. "그리스어에서 문자 [? A], 키릴 문자에서 문자 [? B] 등 많은 코드 포인트가 표시됩니다. A]는 그리스어에서는 흔하지 않지만 [? B]는 불가리아어로 매우 자주 사용되기 때문에이 페이지는 키릴 문자로 사용됩니다. " 그런 종류의 것. 즉, 페이지의 약간 다른 텍스트가 코드 포인트 빈도를 따라 이동하면 브라우저가 텍스트 인코딩을 완전히 다르게 해석 할 수 있습니다. 이것이 요즘 UTF-8을 사용하는 이유입니다. 또한 HTTP 헤더와 메타 태그에서 텍스트 인코딩을 선언하는 이유이기도합니다.