P粉1847475362023-08-22 15:24:08
저는 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粉0329772072023-08-22 11:53:19
데이터 저장:
데이터베이스의 모든 테이블과 텍스트 열에 utf8mb4
字符集。这使得MySQL在物理上存储和检索以UTF-8编码的值。请注意,如果指定了utf8mb4_*
校对(没有任何显式字符集),MySQL将隐式使用utf8mb4
인코딩을 지정하세요.
이전 버전의 MySQL(<5.5.3)에서는 유니코드 문자의 하위 집합만 지원하는 utf8
를 사용해야 합니다. 농담이었으면 좋았을 텐데.
데이터 액세스:
애플리케이션 코드(예: PHP)에서는 사용된 데이터베이스 액세스 방법에 관계없이 연결 문자 집합을 utf8mb4
로 설정해야 합니다. 이런 방식으로 MySQL은 데이터를 애플리케이션에 전달할 때 기본 UTF-8에서 변환을 수행하지 않으며 그 반대의 경우도 마찬가지입니다.
일부 드라이버는 자체 내부 상태를 업데이트하고 연결에 사용할 인코딩을 MySQL에 알리는 연결 문자 집합을 구성하기 위한 자체 메커니즘을 제공합니다. 이는 일반적으로 선호되는 접근 방식입니다. PHP에서:
mysqli를 사용하는 경우 set_charset()
로 전화할 수 있습니다.
순수한 mysql에 갇혀 있지만 PHP ≥ 5.2.3을 실행 중인 경우 mysql_set_charset
을 호출할 수 있습니다.
드라이버가 연결 문자 집합 설정을 위한 자체 메커니즘을 제공하지 않는 경우 MySQL 애플리케이션에 연결 시 데이터를 예상할 인코딩을 알려주는 쿼리를 실행해야 할 수도 있습니다: SET NAMES 'utf8mb4'
.
위의 utf8mb4
/utf8
/
출력
:🎜Content-Type: text/html; charset=utf-8
。您可以通过在php.ini中设置default_charset
(首选)或手动使用header()
함수 등을 사용하여 HTTP 헤더에 설정되어야 합니다. json_encode()
对输出进行编码时,将JSON_UNESCAPED_UNICODE
를 두 번째 매개변수로 사용하여 추가됩니다. 들어가세요 :
mb_check_encoding()
은 이 문제를 해결할 수 있지만 엄격하게 사용해야 합니다. 악의적인 클라이언트가 원하는 인코딩으로 데이터를 제출할 수 있기 때문에 이 문제를 해결할 수 있는 방법은 실제로 없습니다. 그리고 PHP가 이 작업을 안정적으로 수행하도록 하는 트릭을 찾지 못했습니다. 기타 코드 노트:
제공하는 모든 파일(PHP, HTML, JavaScript 등)은 유효한 UTF-8로 인코딩되어야 합니다.
UTF-8 문자열을 처리할 때마다 안전하게 수행되는지 확인해야 합니다. 이것은 매우 어려운 부분입니다. PHP의 mbstring
확장 기능을 광범위하게 사용해야 할 수도 있습니다.
PHP의 내장 문자열 작업은 기본적으로 UTF-8 안전하지 않습니다. 연결과 같은 일반적인 PHP 문자열 작업을 사용하여 일부 작업을 안전하게 수행할 수 있지만 대부분의 작업에서는 동등한 mbstring
함수를 사용해야 합니다.
무엇을 하고 있는지(즉, 망치지 않으려면) UTF-8과 UTF-8이 가장 낮은 수준에서 어떻게 작동하는지 이해해야 합니다. utf8.com의 링크를 확인하여 알아야 할 모든 것을 알아보세요.