HTML에 유니 코드 기호 표시


89

HTML 페이지에 틱 (✔)과 십자 (✘) 기호를 간단히 표시하고 싶지만 상자 또는 엉터리 "œ"로 표시됩니다. 분명히 인코딩과 관련이 있습니다.

utf-8을 표시하도록 메타 태그를 설정했지만 분명히 뭔가 빠졌습니다.

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

편집 / 솔루션 : FireBug를 사용하여 작성한 주석에서 내 페이지에서 전달되는 헤더가 실제로 UTF-8이 아닌 "Content-Type : text / html"임을 발견했습니다. Notepad ++를 사용하여 파일 형식을 살펴보면 내 파일이 "UTF-8 without BOM"으로 형식화되었음을 알 수 있습니다. 이것을 UTF-8로 변경하면 이제 기호가 올바르게 표시되지만 방화범은 여전히 ​​동일한 콘텐츠 유형을 나타내는 것 같습니다.

답변:


56

HTTP 서버 헤더가 올바른지 확인해야합니다.

특히 헤더 :

Content-Type: text/html; charset=utf-8

있어야합니다.

HTTP 헤더가있는 경우 메타 태그는 브라우저에서 무시됩니다.

또한 파일을 제공하기 전에 실제로 UTF-8로 인코딩되었는지 확인하고 다음을 확인 / 시도하십시오.

  • 편집기가 UTF-8로 저장했는지 확인하십시오.
  • FTP 또는 파일 전송 프로그램이 파일을 엉망으로 만들지 않도록하십시오.
  • HTML은 같은 개체를 인코딩하여보십시오 &#uuu;.
  • 확실하게하려면 파일을 hexdump하고 문자로 봅니다. ✔의 경우 E2 9C 94 여야합니다.

참고 : 시스템에서 글리프 (해당 문자가있는 글꼴 없음)를 찾을 수없는 유니 코드 문자를 사용하는 경우 브라우저에 물음표 또는 기호와 같은 일부 블록이 표시되어야합니다. 그러나 당신과 같이 로마자 문자가 여러 개 보인다면 이것은 인코딩 문제를 의미합니다.


실제로 메타 태그는 무시되지 않지만 HTTP 헤더가 우선합니다. 그 정확성에 대해 Konrad에게 감사드립니다.

8
contentCSS ::before선택기 의 속성 에서 유니 코드 문자 를 사용하려면 백 슬래시 표기법을 사용해야합니다. 예 : '& # 2713'대신 '\ 2713'.
Fabien Snauwaert

18

이미 답변이 받아 들여진 것을 알고 있지만 몇 가지를 지적하고 싶습니다.

를 설정 content-type하고 charset그것을 응용 프로그램에서 일관성을 보장하기 때문에 서버에 그 일을 분명히 좋은 연습 것은, 훨씬 낫다.

그러나 UTF-8내 응용 프로그램의 언어가 문자 UTF-8집합 에서만 사용할 수있는 많은 문자를 사용하는 경우에만 사용합니다 . 경우 중 하나에 유니 코드 문자 또는 기호를 표시하려는 경우 charset페이지를 변경하지 않고 그렇게 할 수 있습니다 .

HTML에서 기호를 언급하는 한 렌더러는 항상 페이지의 인코딩 문자 집합의 일부가 아닌 기호를 표시 할 수있었습니다 numeric character reference (NCR). 이상하게 들리지만 사실입니다.

따라서 html인코딩 ansi또는 iso문자 집합 이 있음을 나타내는 헤더가 있더라도 십진수-& # 10003; html 문자 참조를 사용하여 확인 표시를 표시 할 수 있습니다. 또는 16 진수-& # x2713;

따라서 페이지 에서이 문제가 발생하는 이유를 이해하기가 조금 어렵습니다. NCR 값이 올바른지 확인할 수 있습니까? 이것은 좋은 참조입니다. http://www.fileformat.info/info/unicode/char/2713/index.htm


6
"그러나 내 응용 프로그램의 언어가 UTF-8 문자 집합에서만 사용할 수있는 많은 문자를 사용하는 경우에만 UTF-8을 사용합니다."이유는 무엇입니까? 전환의 단점은 무엇입니까?
dumbledad

3
@dumbledad : 아주 좋은 질문입니다. 내 편견이 내 대답을 흐려지게 한 것 같습니다. 내가 말하고자하는 것은 전체 애플리케이션이 이미 utf-8이 아닌 경우 단일 페이지에 대한 애플리케이션 vide를 변경하는 것이 너무 많은 작업이 될 수 있다는 것입니다. 또한 프로그래밍 언어 및 콘텐츠에 utf-8 문자가 필요하지 않은 경우 실수로 편집자가 괜찮은 정크 문자를 복사하여 붙여 넣을 수 있지만 (utf-8 모드이기 때문에) 실행 중에 코드가 실패합니다. 가능하면 인코딩 및 문자 세트를 업데이트하십시오
Akshay

6

실제로 파일을 UTF-8로 저장 &#nnn;하거나 특수 문자에 HTML 엔티티 ( )를 사용하십시오.


✔에 대한 HTML 엔터티가없는 것 같거나 내가 놓친 적이 있습니까? 어떻게 "실제로"파일을 UTF-8로 저장하고 어떻게 확인할 수 있습니까?
Peter Craig

@Peter : 괜찮은 편집기를 사용합니다. 대부분의 텍스트 편집기에는 "다른 이름으로 저장"대화 상자에 파일 인코딩을 지정하는 옵션이 있거나 메뉴 어딘가에 다른 옵션이 숨겨져 있습니다. Vim은 fileencoding설정을 사용합니다 .
Konrad Rudolph

8
@Peter, 코드로 모든 문자를 참조 할 수 있습니다. & # x2714; 진드기.
Dan Dyer

utf-8로 저장하십시오. 흥미로운 개념. 정적 HTML 페이지를 만드는 경우 잘 작동합니다. 하지만 ... 동적 웹 페이지는 어떻습니까? 이 유니 코드 / utf-8 / 와이드 문자는 나에게 정말 혼란 스럽습니다. 내 백엔드 코드는 펄입니다. http 헤더가 올바르게 설정되었으며 html 헤더도 마찬가지입니다. W3C 국제화 검사기는 문서가 utf-8로 설정되어 있는지 확인합니다. CaSinG가 중요합니까? 마지막으로 텍스트 입력 상자는 어떻습니까? 나는 여전히 멍청이! :(
Jarett Lloyd

이전 댓글에 대한 부록 : 내 데이터베이스에 데이터가 올바르게 입력되었으며 문자가 올바르게 표시됩니다. 그래서 데이터베이스 문제가 아닙니다. 내 perl 스크립트 (또는 편집기)는 스크립트를 utf-8로 저장하도록 설정되어 있습니다. 내 서버 apache2, 방해하지 않거나 올바르게 설정되어 있다고 확신합니다. 이 모든 것은 여전히 ​​문자가 왜 엉망인지 확실하지 않습니다. 으. 더 나은 방법이 있어야한다
Jarett 로이드

5

Nicolas가 제안한 것과 달리 meta태그는 실제로 브라우저에서 무시되지 않습니다. 그러나 Content-TypeHTTP 헤더는 항상 meta문서 에있는 태그 보다 우선 합니다.

따라서 HTTP 헤더를 통해 올바른 인코딩을 보내거나이 HTTP 헤더를 전혀 보내지 마십시오 (권장하지 않음). meta태그는 주로 HTTP 트래픽을 통해 전송되지 않은 로컬 문서에 대한 대체 옵션입니다.

HTML 엔터티를 사용하는 것도 해결 방법으로 고려되어야합니다. 이것이 실제 문제를 해결하는 것입니다. 웹 서버를 적절하게 구성하면 많은 불편을 방지 할 수 있습니다.


0

이것이 파일 문제라고 생각합니다. latin-1과 같은 1 바이트 인코딩으로 파일을 저장했습니다. Google에서 편집기를 설정하고 파일을 utf-8로 설정하는 방법.

utf-8을 기본값으로 사용하지 않는 편집기가 왜 있는지 궁금합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.