제목은 "전체적으로 UTF-8 인코딩 사용"으로 다시 작성됩니다.
P粉321676640
P粉321676640 2023-08-21 21:12:13
0
2
431

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

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

이것은 MySQL 5, PHP 5 및 Apache 2를 실행하는 새로운 Linux 서버입니다.

P粉321676640
P粉321676640

모든 응답 (2)
P粉790187507

chazomaticus의 탁월한 답변에 한 가지 점을 더 추가하고 싶습니다.

또한 META 태그(예:HTML4 또는 XHTML 버전)도 잊지 마세요.

으아아아

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

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

페이지에 META 태그가 누락된 것으로 나타났습니다. 추가한 후 문제가 해결되었습니다.

편집자:

W3C에는 실제로 국제화(I18N)를 전담하는 다소 큰섹션이 있습니다. 이 문제와 관련된 많은 기사가 있습니다. HTTP, (X)HTML 및 CSS의 측면을 설명합니다.

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

    P粉653045807

    데이터 저장:

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

    • 이전 버전의 MySQL(utf8만 사용할 수 있었습니다. 농담이기를 바랍니다.

    데이터 액세스:

    • 애플리케이션 코드(예: PHP)에서는 어떤 데이터베이스 액세스 방법을 사용하든 연결 문자 집합을utf8mb4로 설정해야 합니다. 이런 방식으로 MySQL은 데이터를 애플리케이션에 전달할 때 데이터 변환을 수행하지 않으며 그 반대의 경우도 마찬가지입니다.

    • 일부 드라이버는 자체 내부 상태를 업데이트하고 연결에 사용할 인코딩을 MySQL에 알리는 연결 문자 집합을 구성하는 자체 메커니즘을 제공합니다. 이는 일반적으로 선호되는 방법입니다. PHP에서:

      • PHP ≥ 5.3.6용PDO추상화 계층을 사용하는 경우DSNcharset를 지정할 수 있습니다.

        으아아아
      • mysqli를 사용하는 경우set_charset()로 전화할 수 있습니다.

        으아아아
      • 순수한mysql에 갇혀 있지만 PHP ≥ 5.2.3을 실행 중인 경우mysql_set_charset을 호출할 수 있습니다.

    • 드라이버가 연결 문자 집합 설정을 위한 자체 메커니즘을 제공하지 않는 경우 애플리케이션이 연결에서 데이터 인코딩을 처리하는 방법을 MySQL에 알리는 쿼리를 실행해야 할 수도 있습니다:SET NAMES 'utf8mb4'.

    • 위의utf8mb4/utf8/

      에 대한 동일한 주의 사항이 여기에도 적용됩니다.

    출력

    :
    • UTF-8은Content-Type: text/html; charset=utf-8。你可以通过在php.ini中设置default_charset(首选)或手动使用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에는 알아야 할 모든 것을 배울 수 있는 훌륭한 리소스가 있습니다.

      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!