2010-01-14 5 views
1

내 양식의 텍스트 필드에 £을 입력 할 때 어떤 이유로£ 76756687 이상한 문자가 나옵니까?PHP £ 기호 앞에 이상한 문자가 있습니까?

+0

양식에 양식이 표시 되나요? 아니면 다른 곳에서 끝나나요? 나는 UTF-8/ISO-8859-1 미스 매치가 – falstro

+0

인 것을 전자 메일로 보냈습니다. – tarnfeld

+0

일반 텍스트 또는 HTML 전자 메일입니까? –

답변

7

예상대로 캐릭터 인코딩 문제 - UTF-8의 charset을 사용하도록 설정된 페이지입니까? (당신은 정말이 인코딩으로 잘못 갈 수 없어.) 또한, 엔티티 엔티티 엔코 드하려면 엔코 드 싶어 (£)

예를 들어, 문자 집합 (양식 페이지와 HTML 이메일)을 사용할 수 있습니다 :

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

그렇다면 사용자가 통화 기호를 입력해야하는 충분한 이유가 있습니까? 정적 텍스트 항목 또는 텍스트 필드의 왼쪽으로 드롭 다운하는 것이 더 좋은 아이디어일까요? (내가 엉덩이를 말하고 자유 형식의 텍스트 영역이나 summat을 사용하고 있다면 무시해도 좋습니다.)

+0

+1, 우수한 대답 –

+0

은 차이를 만드는 것 같지 않습니다. | – tarnfeld

+1

정보가 이미 HTTP와 같은 상위 레벨에 명시되어있는 경우 문서 안의 정보는 무시됩니다. – Gumbo

4

UTF-8을 문자 인코딩으로 사용하고 있지만 출력을 올바르게 선언하지 않았습니다. £ 문자 (U + 00A3)는 0xC2A3을 사용하여 UTF-8로 인코딩됩니다. 그리고이 바이트 시퀀스는 ISO 8859-1로 해석 할 때 £의 두 문자를 나타냅니다.

문자 인코딩을 올바르게 지정하면됩니다.

header('Content-Type: text/html;charset=utf-8'); 

을하지만 모든 출력하기 전에이 함수를 호출해야합니다 PHP에서는 Content-Type header field 등에 적절한 값을 설정 header function를 사용할 수 있습니다. 그렇지 않으면 HTTP 헤더가 이미 보내 졌으므로 수정할 수 없습니다.