찾다

 >  Q&A  >  본문

처음부터 끝까지 UTF-8 수용

새 서버를 설정 중이고 웹 애플리케이션에서 완전한 UTF-8 지원을 원합니다. 과거에 기존 서버에서 이 작업을 시도했지만 결국 항상 ISO-8859-1로 돌아가야 하는 것 같았습니다.

인코딩/문자 세트는 정확히 어디에 설정해야 하나요? 이를 위해서는 Apache, MySQL 및 PHP를 구성해야 한다는 것을 알고 있습니다. 따라야 할 표준 체크리스트가 있습니까? 아니면 불일치가 발생한 부분을 해결할 수 있습니까?

이 기능은 MySQL 5, PHP, 5 및 Apache 2를 실행하는 새로운 Linux 서버에서 작동합니다.

P粉925239921P粉925239921442일 전870

모든 응답(2)나는 대답할 것이다

  • P粉482108310

    P粉4821083102023-10-16 00:11:18

    chazomaticus의 훌륭한 답변에 한 가지를 추가하고 싶습니다:

    메타 태그도 잊지 마세요(예: HTML4 또는 XHTML 버전):

    으아아아

    사소해 보일 수도 있지만 이전에는 IE7에서 문제가 발생했습니다.

    모든 작업을 올바르게 수행하고 있습니다. 데이터베이스, 데이터베이스 연결 및 Content-Type HTTP 헤더가 모두 UTF-8로 설정되어 있어 다른 모든 브라우저에서는 잘 작동하지만 Internet Explorer에서는 여전히 "서유럽" 인코딩을 사용해야 합니다.

    페이지에 META 태그가 누락된 것으로 나타났습니다. 추가하면 문제가 해결됩니다.

    편집자:

    W3C에는 실제로 I18N 전용으로 꽤 큰 섹션이 있습니다. 이 문제와 관련된 여러 기사가 있습니다 - HTTP, (X)HTML 및 CSS의 측면을 설명합니다:

    HTTP 헤더와 HTML 메타 태그(또는 XML로 작동하는 XHTML의 경우 XML 선언)를 모두 사용하는 것이 좋습니다.

    회신하다
    0
  • P粉457445858

    P粉4574458582023-10-16 00:05:39

    데이터 저장:

    • 데이터베이스의 모든 테이블과 텍스트 열에 대한 인코딩을 utf8mb4 字符集。这使得 MySQL 物理存储和检索以 UTF-8 原生编码的值。请注意,如果指定了 utf8mb4_* 排序规则(没有任何显式字符集),MySQL 将隐式使用 utf8mb4 지정하세요.

    • 이전 버전의 MySQL(< 5.5.3) 中,不幸的是,您将被迫仅使用 utf8에서는 유니코드 문자의 하위 집합만 지원합니다. 농담이었으면 좋겠습니다.

    데이터 액세스:

    utf8mb4

    /utf8에도 적용됩니다.

    🎜 🎜 🎜🎜출력🎜: 🎜
    • UTF-8은 Content-Type:text/html;字符集=utf-8。您可以通过设置 default_charset 在 php.ini 中(首选),或手动使用 header() 함수와 같은 HTTP 헤더에 설정되어야 합니다.
    • 응용 프로그램이 텍스트를 다른 시스템으로 전송하는 경우 문자 인코딩도 알아야 합니다. 웹 애플리케이션의 경우 HTTP 응답 헤더 또는 HTML 메타데이터를 통해 데이터를 보낼 인코딩을 브라우저에 알려야 합니다. < /里>
    • 두 번째 매개변수로 json_encode() 对输出进行编码时,添加 JSON_UNESCAPED_UNICODE를 사용하세요.

    들어가세요 :

    • 브라우저는 문서에 지정된 문자 집합에 대한 데이터를 제출하므로 입력 시 특별한 작업을 수행할 필요가 없습니다.
    • 요청 인코딩에 대해 의심이 가는 경우(무단 변경되었을 수 있는 경우) 수신된 각 문자열을 어디에나 저장하거나 사용하기 전에 유효한 UTF-8인지 확인할 수 있습니다. PHP의 mb_check_encoding()은 다음을 수행합니다. 트릭을 사용하지만 종교적으로 사용해야 합니다. 악의적인 클라이언트가 원하는 어떤 인코딩으로든 데이터를 제출할 수 있기 때문에 이 문제를 해결할 수 있는 방법이 없습니다. 그리고 저는 PHP가 이를 안정적으로 수행하도록 하는 트릭을 찾지 못했습니다.

    기타 코드 노트:

    • 제공하는 모든 파일(PHP, HTML, JavaScript 등)은 유효한 UTF-8을 사용하여 인코딩되어야 합니다.

    • UTF-8 문자열을 처리할 때마다 안전한지 확인해야 합니다. 불행히도 이것이 가장 어려운 부분입니다. PHP의 mbstring 확장 기능을 광범위하게 사용하고 싶을 수도 있습니다.

    • 기본적으로 PHP에 내장된 문자열 연산은 UTF-8 안전하지 않습니다. 일반적인 PHP 문자열 작업을 사용하여 일부 작업(예: 연결)을 안전하게 수행할 수 있지만 대부분의 경우 동등한 함수를 사용해야 합니다. mbstring

    • 무엇을 하고 있는지(읽기: 망치지 말고) 알려면 UTF-8과 UTF-8이 가능한 가장 낮은 수준에서 어떻게 작동하는지 이해해야 합니다. 당신이 알아야 할 모든 것에 대한 훌륭한 자료를 보려면

      utf8.com의 링크를 확인하세요.

    • 회신하다
      0
  • 취소회신하다