HTML 문서에서 문자를 올바르게 표시하는 방법에 대한 질문에 대답하려면 다음 두 가지 중 하나를 수행해야합니다. 문서의 인코딩을 설정하거나 비 ASCII 문자를 엔티티 화하십시오.
인코딩을 설정하려면 두 가지 옵션이 있습니다.
- Content-Type 헤더에 적절한 문자 집합 인수를 보내도록 웹 서버를 업데이트하십시오. 올바른 헤더는
Content-Type: text/html; charset=UTF-8
입니다.
- 페이지의 머리 부분 에
<meta charset="UTF-8" />
태그를 추가하십시오.
옵션 1은 옵션 2보다 우선합니다.헤더에 잘못된 문자 집합을 이미 설정 한 경우 메타 태그로 재정의 할 수 없습니다.
다른 옵션은 비 ASCII 문자를 엔티티 화하는 것입니다. 질문의 인용 문자는 ”
또는 ”
또는 ”
을 사용할 수 있습니다. 첫 번째는 사용자에게 친숙한 명명 된 엔티티이며, 두 번째는 10 진수로 된 문자의 유니 코드 코드 포인트를 지정하고 세 번째 코드는 16 진수로 코드 포인트를 지정합니다. 모두 유효하며 모두 작동합니다.
일반적으로 알 수없는 문자가 포함 된 데이터베이스에서 동적 내용을 엔티티 화하려면 엔티티의 코드 포인트 버전을 사용하는 것이 가장 좋습니다. 적절한 코드 포인트로 이동하십시오.
내가 현재 작업하고있는 시스템 중 하나는 실제로 UTF-8 소스에서 데이터를 가져 와서 Content-Type 헤더를 제어 할 수없는 HTML 페이지를 제공해야하는이 문제에 실제로 부딪혔다. 우리는 실제로 자바 문자의 스트림을 모든 비 ASCII 문자가 엔티티로 변환 된 ASCII 인코딩 된 바이트 스트림으로 변환 할 수있는 사용자 정의 Java Charset을 작성했습니다. 그런 다음 출력 스트림을 Writer에서 해당 Charset으로 래핑하고 평소와 같이 모든 것을 출력합니다. Charset을 올바르게 구현하는 데는 몇 가지 어려움이 있지만 간단하게 인코딩을하는 것은 간단합니다. 서로 게이트 쌍을 올바르게 처리해야합니다.
플랫폼 (특히 UTF-8)의 특정 기본 인코딩에서 3 바이트 길이입니다. –
예, 좋은 지적입니다! 더 명확하게하기 위해 명시 적 인코딩을 추가 할 것입니다 ... – DNA