메타 HTML 인코딩. HTML 페이지 인코딩

지난 몇 시간 동안 내 웹사이트에서 HTML 4.01 Strict를 테스트했고 실제로 성공했지만 제거할 수 없는 경고가 하나 더 있습니다. 경고:

문자 인코딩 불일치!

HTTP 헤더(iso-8859-1)에 지정된 문자 인코딩이 요소의 값(utf-8)과 다릅니다. 이 확인을 위해 HTTP 헤더(iso-8859-1)의 값을 사용하겠습니다.

다양한 네트워크 스택에서 문자 집합 헤더를 변경하는 방법에 대한 일반적인 정보는 http://www.w3.org/International/O-HTTP-charset을 참조하세요.


2018-05-25 13:30

서버는 HTTP 헤더에 문서를 ISO-8859-1로 명확하게 표시합니다. 적절한 편집기를 사용하여 UTF-8 인코딩을 사용하여 default.html을 저장해 보세요.


2018-05-25 03:07

좋아, 내 문제에 대한 부분적인 해결책을 찾았습니다. 경고를 일으킨 것은 단지 default.html 파일이었기 때문에 서버가 이름 때문에 그 파일에 특별한 작업을 수행하고 있다고 가정했습니다. 그래서 default.html 파일과 동일한 내용으로 새 home.html 파일을 만들고 .htaccess 파일에 새 파일을 지정했습니다(아래 3행 참조).

# PHP5를 기본으로 사용 AddHandler application/x-httpd-php5 .php DirectoryIndex home.html AddDefaultCharset UTF-8

이로 인해 문제가 해결되었으며 이제 모든 파일이 UTF-8로 인식됩니다. 나는 여전히 서버가 default.html 파일로 무엇을 하고 있는지 또는 이와 관련된 설정이 어디에 있는지 잘 모르지만 문제가 사라지면 잊어버릴 것입니다.

초보자가 직면하는 가장 일반적인 문제 중 하나 웹마스터(초보자뿐만 아니라), 이것은 사이트 코딩 문제. 나 역시도 웹사이트를 만들 때 끊임없이 등장한다” 헛소리"하지만 다행스럽게도 저는 이 문제를 해결하는 방법을 완벽하게 알고 있으므로 몇 초 안에 모든 것을 정리했습니다. 그리고 이 기사에서는 최대한 빨리 여러분에게 가르치려고 노력할 것입니다. 사이트 코딩 관련 문제 해결.

가장 먼저 주목해야 할 점은 "abracadabra" 모양과 관련된 모든 문제는 문서 인코딩과 브라우저에서 설정한 인코딩 간의 불일치와 관련이 있다는 것입니다. 문서가 있다고 가정 해 봅시다. windows-1251, 그러나 어떤 이유로 브라우저에 표시됩니다. UTF-8. 그리고 그러한 불일치의 원인은 다음과 같습니다.

첫 번째 이유

메타태그가 잘못 작성되었습니다. 컨텐츠 타입. 주의하세요. 문서가 작성된 인코딩이 항상 포함되어 있어야 합니다.

두 번째 이유

메타 태그가 원하는 방식으로 작성된 것 같고 브라우저에는 원하는 대로 정확하게 표시되지만 어떤 이유에서인지 여전히 인코딩에 문제가 있습니다. 여기서 범인은 거의 확실하게 문서 자체의 인코딩이 다르다는 것입니다. 다음 분야에서 근무하는 경우 메모장++을 선택하면 오른쪽 하단에 현재 문서의 인코딩 이름이 표시됩니다(예: 안시). 메타태그를 넣으면 UTF-8, 문서 자체는 다음과 같이 작성되었습니다. 안시, 다음으로 변환을 수행합니다. UTF-8(메뉴를 통해 " 인코딩" 그리고 포인트 " BOM 없이 UTF-8로 변환").

세 번째 이유

네 번째 이유

그리고 마지막으로 인기 있는 마지막 이유는 데이터베이스 인코딩 문제. 먼저, 모든 테이블과 필드가 사이트의 나머지 부분의 인코딩과 일치하는 동일한 인코딩으로 작성되었는지 확인하세요. 이것이 도움이 되지 않으면 스크립트에서 연결한 후 즉시 다음 요청을 실행하십시오.

세트 이름 "utf8"

대신에 " UTF8" 다른 인코딩이 있을 수 있습니다. 그 후에는 데이터베이스의 모든 데이터가 올바른 인코딩으로 나와야 합니다.

이 기사에서는 최소한 다음 사항을 설명했길 바랍니다. 사이트에 "횡설수설"이 나타나는 것과 관련된 문제의 90%. 이제 잘못된 인코딩과 같은 대중적이고 간단한 문제를 즉시 처리해야 합니다.

인코딩이 올바르지 않으면 사이트 전체 또는 일부가 "kryapozyablov"로 표시됩니다. 텍스트를 읽을 수 없게 만드는 이상한 문자. 웹 서버 인코딩이 잘못 구성되었거나 설정이 없는 경우 이러한 상황이 발생할 수 있습니다. 가능한 옵션과 문제 해결 방법을 고려해 봅시다

잘못된 HTML 페이지 인코딩

테스트 파일을 만들어 보겠습니다.

Sudo gedit /var/www/html/encoding.html

여기에 복사해 봅시다:

인코딩 확인



이 파일을 브라우저에서 열어보자

보시다시피 브라우저에서 인코딩이 잘못 감지되었습니다.

이 상황을 해결하는 방법에는 여러 가지가 있습니다. 가장 간단한 것부터 시작해 보겠습니다. 웹 페이지의 인코딩을 명시적으로 지정하는 것입니다. 이는 태그 내부에 있어야 하는 메타 태그에 의해 수행됩니다. 머리:

다음 줄을 테스트 파일에 추가해 보겠습니다.

인코딩 확인

인코딩 확인을 위한 테스트 파일



다음 스크린샷에서 볼 수 있듯이 문제가 해결되었습니다.

파일 인코딩이 다른 경우 UTF-8, 다음으로 교체 windows-1251또는 웹페이지의 인코딩과 일치하는 것. 파일 인코딩을 감지하는 방법을 알아보려면 살펴보세요.

이는 서버 설정을 변경하지 않고 인코딩 문제를 해결하는 가장 쉬운 방법이었습니다.

테스트 파일을 원래 상태로 되돌리고 인코딩을 지정하는 방법을 계속 연구하겠습니다.

파일인 경우 .htaccess Apache 설정으로 활성화된 이러한 파일은 웹 서버에서 보낸 페이지의 인코딩을 지정하는 데 사용될 수 있습니다. 파일 지원을 활성화하려면 .htaccess Apache 구성 파일( /etc/apache2/apache2.conf) 라인 그룹 찾기

옵션 인덱스 FollowSymLinks AllowOverride 없음 모두 필요 허용

그리고 교체하세요

AllowOverride 없음

모두 무시 허용

그 후에는 서버를 다시 시작해야 합니다.

Sudo systemctl restart apache2.service

파일 .htaccess사이트와 동일한 디렉터리에 있어야 합니다. 내 사이트는 웹 서버의 루트 디렉터리에서 호스팅됩니다. 동일한 내용이 있으면 이제 폴더에 /var/www/html/파일을 생성하다 .htaccess그리고 거기에 지시문을 추가하세요 AddDefaultCharset그 후에 원하는 인코딩을 나타냅니다. 예

AddDefaultCharset UTF-8

AddDefaultCharset windows-1251

특정 형식의 파일에만 적용되는 인코딩을 지정할 수 있습니다.

AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

파일 세트는 무엇이든 될 수 있습니다. 예를 들면 다음과 같습니다.

AddCharset utf-8 .html .css .php .txt .js

다음 옵션은 대안이며 활성화해야 하는 특정 유형의 파일에 대한 인코딩을 설정할 수도 있습니다. mod_headers:

헤더 세트 Content-Type "text/html; charset=utf-8"

파일에서도 사용할 수 있는 또 다른 옵션 .htaccess UTF-8 인코딩을 설정하려면 다음을 수행하세요.

IndexOptions +Charset=UTF-8

사이트가 PHP로 되어 있는 경우 추가로 인코딩을 복제해야 할 수도 있습니다. php_value default_charset:

AddDefaultCharset windows-1251 php_value default_charset "cp1251"

.htaccess 파일을 생성하는 대신 웹 서버 구성 파일에서 인코딩을 설정할 수 있습니다. Apache CentOS/Fedora의 경우 httpd.conf 파일이고 Debian/Ubuntu의 경우 apache2.conf 파일입니다. 인코딩을 설정하고 변경 사항을 적용하려면 웹 서버를 다시 시작하려면 다음 줄을 추가하세요.

AddDefaultCharset UTF-8

PHP에서 UTF-8 인코딩을 설정하는 방법

PHP 스크립트에서 인코딩은 다음과 같이 설정됩니다. 머리글, 예를 들어:

Header("콘텐츠 유형: charset=utf-8");

일반적으로 인코딩과 함께 콘텐츠 유형도 표시됩니다(예: HTML 페이지에 대한 옵션).

Header("콘텐츠 유형: text/html; charset=utf-8");

RSS 피드의 또 다른 옵션:

Header("콘텐츠 유형: text/xml; charset=utf-8");

기능을 기억하세요 머리글브라우저에 출력하기 전에 호출해야 합니다. 그렇지 않은 경우(브라우저에 이미 출력된 경우) 헤더가 이미 전송된 것입니다. 분명히 이 경우 더 이상 변경할 수 없습니다. 브라우저에 오류 메시지가 출력된 경우 헤더가 이미 전송된 것이므로 헤더를 사용하면 오류가 발생합니다. 헤더가 이미 전송되었는지 확인하려면 다음을 사용하십시오. headers_sent.

설명된 방법은 PHP 스크립트가 페이지의 콘텐츠를 완전히 생성하는 경우에만 작동합니다. utf-8 인코딩으로 정적 페이지(예: html)를 저장해야 합니다. 대부분의 웹 서버는 파일의 인코딩을 기록하고 그에 따라 헤더를 추가합니다. 실제로 PHP 파일을 utf-8 인코딩으로 저장하면 동일한 결과가 나타납니다.

MySQL 데이터베이스 결과의 잘못된 인코딩

사이트가 정적 부분(템플릿)과 데이터베이스에서 받은 데이터로 구성된 동적 부분으로 구성된 경우 사이트의 일부는 올바른 인코딩을 갖고 있고 사이트의 다른 부분은 잘못된 인코딩이 있는 상황이 발생할 수 있습니다. 하나. 이 경우 웹 서버 설정을 변경하는 것은 쓸모가 없습니다. 모두 동일하기 때문에 페이지의 일부가 잘못된 인코딩을 갖게 됩니다.

테이블의 인코딩을 결정하는 것부터 시작해야 합니다. 당신은 볼 수 있습니다 phpMyAdmin:

"열에 주목하세요. 비교", 항목 " utf8_unicode_ci"는 인코딩이 사용됨을 의미합니다. UTF-8.

phpMyAdmin 없이 MySQL DBMS에 연결하여 테이블 인코딩을 확인할 수 있습니다. 이를 위해:

MySQL -u 루트 -p

데이터베이스 이름을 잊어버린 경우 다음 명령을 실행하십시오.

데이터베이스 표시;

information_schema 데이터베이스에서 테이블의 인코딩을 조회하고 싶다고 가정해 보겠습니다.

USE 정보_스키마;

테이블 이름을 잊어버린 경우 다음을 실행하세요.

table_name의 전체 열 표시;

예를 들어:

GLOBAL_STATUS의 전체 열을 표시합니다.

다음과 같은 내용이 표시됩니다.

칼럼 보기 대조. 내 경우에는 거기에 utf8_general_ci, 그것은 마치 utf8_unicode_ci, 인코딩 UTF-8. 그런데 인코딩의 차이점이 무엇인지 모르신다면 utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, 그리고 MySQL 데이터베이스에 대해 선택할 인코딩을 확인한 다음 살펴보세요.

이제 인코딩(제 경우에는 UTF-8)을 알았으므로 MySQL DBMS에 연결할 때마다 쿼리를 순차적으로 실행해야 합니다.

이름 설정 UTF8 문자 설정 UTF8 설정 Character_set_client = UTF8 설정 Character_set_connection = UTF8 설정 Character_set_results = UTF8

PHP에서는 다음과 같이 할 수 있습니다:

$this->mysqli = new mysqli($server, $username, $password, $basename); if ($this->mysqli->connect_error) ( $this->errorHandler_c->logError(1, "연결 오류 (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error , $_SERVER ["REQUEST_URI"] ) $this->mysqli->query("SET NAMES UTF8"); $this->mysqli->query("SET CHARACTER SET UTF8"); $this->mysqli->query("SET Character_set_client = UTF8"); $this->mysqli->query("SET Character_set_connection = UTF8"); $this->mysqli->query("SET 문자 집합_결과 = UTF8");

그것을 참고 UTF8이를 테이블에 사용되는 인코딩으로 바꿔야 합니다.

파일 인코딩 변경

다른 방법으로 이동하기로 결정하고 새 인코딩을 설치하는 대신 파일의 인코딩을 변경한 다음 "" 문서를 참조하세요. 현재 파일 인코딩을 찾는 방법과 파일을 UTF-8뿐만 아니라 모든 인코딩으로 변환하는 방법을 알려줍니다.

서버가 보내는 인코딩을 확인하는 방법

웹 서버의 인코딩 설정(헤더로 보내는 인코딩)을 확인하려면 다음 명령을 사용하세요.

컬 URL -s -o /dev/null -D /dev/stdout | grep -E "문자 세트"

그 대신에 URL확인하고 있는 사이트의 실제 주소를 입력하세요. 사이트에서 HTTPS를 사용하는 경우 프로토콜과 함께 사이트 주소를 지정하십시오. 예를 들어

컬 https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "문자 세트"

웹사이트에 어떤 인코딩을 선택해야 할까요?

초보자뿐만 아니라 초보 블로거도 HTML 페이지 인코딩 문제에 직면하는 경우가 많습니다. 텍스트와 읽을 수 있는 문자 대신 이해할 수 없는 균열이 표시되는 경우. 이는 페이지에 표시되어야 하는 기호와 일치하지 않는 기호에 부여되는 이름입니다. 이해할 수 없는 상형문자는 어디에서 왔습니까?

이를 이해하려면 HTML 페이지 인코딩이 무엇인지 이해해야 합니다. 컴퓨터의 모든 텍스트는 바이트 집합으로 표시됩니다. 각 바이트에는 단 하나의 문자만 특정 코드로 인코딩됩니다. 바이트 집합을 올바르게 해독하거나 디코딩하여 사람이 읽을 수 있는 형식으로 표시하려면 브라우저가 코드 테이블 중 하나와 일치해야 합니다.

기본 인코딩은 라틴 알파벳 128자와 특수 문자(괄호, 격자 등)에 대한 코드를 포함하는 ASCII 인코딩입니다. 그런 다음 최초의 러시아어 문자 인코딩인 CP866 및 KOI8-R이 등장했고, 그로부터 오늘날의 웹마스터에게 알려진 Windows-1251 인코딩이 탄생했습니다. 이러한 인코딩은 모두 러시아어 텍스트를 표시하도록 설계되었지만 코드는 모두 서로 다릅니다.

텍스트가 CP866 인코딩으로 작성되었고 브라우저가 windows-1251 코드 테이블을 사용하여 텍스트를 디코딩하려고 하면 결과적으로 읽을 수 없는 단어가 표시됩니다. 내가 여기에 제시한 인코딩의 이름 외에도 아주 많은 인용문이 있습니다. 이렇게 풍부한 코드 테이블로 인해 인코딩 호환성 문제가 발생했습니다. 범용 인코딩을 만드는 문제가 매우 시급해졌습니다. 오늘날 범용 인코딩 utf-8이 발명되었습니다. 웹 사이트를 프로그래밍할 때 단일 텍스트 코딩 표준을 준수해야 하는 네 가지 사항이 있습니다.

  • 스크립트 인코딩.
  • MySQL 테이블 인코딩.
  • HTML 페이지 자체의 인코딩입니다.
  • 사용자의 브라우저에서 사용되는 로케일입니다.

사이트의 이러한 모든 구성 요소에서는 단일 인코딩을 사용해야 합니다. 일반적으로 utf-8을 사용하는 것이 좋습니다. Ctrl+U 키 조합을 누르면 이 문서에 사용된 인코딩을 보여주는 페이지 코드를 볼 수 있습니다.

블로그를 열었을 때 러시아어 문자 대신 이상한 문자가 보인다면 인코딩이 잘못 설정된 것입니다.

인코딩을 변경하는 방법은 무엇입니까?

블로그 인코딩 오류와 문제를 제거하기 위해 FTP 클라이언트를 사용합니다. 도움을 받아 wp-config.php 파일을 컴퓨터의 "데스크톱"에 복사하고 Notepad++ 텍스트 편집기를 사용하여 엽니다. 이 파일에는 비밀번호, 데이터베이스 인코딩 등을 포함하여 블로그에 대한 정보가 포함되어 있습니다. 인코딩이 다른지 살펴보겠습니다. UTF-8로 변경해야 합니다.

  • - 이 인코딩으로 저장하세요.
  • - 데이터베이스 코드 내에서 인코딩을 UTF-8로 변경합니다.

Notepad++ 편집기에 "BOM 서명 없는 UTF-8" 값으로 파일을 저장하고 파일을 호스팅에 업로드합니다. 즉, 호스팅에서 이전 wp-config.php 파일을 변경합니다. , 새로운.

일반적으로 이러한 작업만으로 블로그에 모든 내용이 올바르게 표시되기에 충분합니다. 위 단계를 수행한 후에도 아무 효과가 없으면 인코딩을 변경하는 다른 방법을 시도해 볼 수 있습니다. 이렇게 하려면 .htaccess 파일을 변경해야 합니다. 이 문제를 해결하려면 Notepad++ 편집기를 사용하여 .htaccess 파일을 열고 시작 부분에 다음 줄 중 하나를 추가하세요.

  • AddDefaultCharset UTF-8
  • 문자 집합 비활성화 켜기
  • CharsetDefault UTF-8
  • CharsetSourceEnc UTF-8

옵션 중 하나를 변경하는 것으로 충분할 수도 있습니다. 때로는 첫 번째 옵션으로 충분할 수도 있습니다. 작동하지 않으면 다음 옵션을 수동으로 진행하여 다음 옵션을 하나씩 입력합니다. 일련의 작업을 잊지 마세요.

  1. 편집기에서 파일을 엽니다.
  2. 우리는 변화를 만들고 있습니다.
  3. 구하다.
  4. 호스팅에 업로드하세요.
  5. 점검 해보자.

또한 캡처 페이지를 만들 때 발생할 수 있고 직면했던 문제 중 하나에 대해서도 언급하고 싶습니다. 캡처 페이지 파일을 호스팅에 업로드할 때 인코딩 불일치 상황이 발생할 수도 있습니다. 이 경우 index.html 파일을 수정해야 합니다. 이렇게 하려면 FaleZilla를 사용하여 파일을 추출하고 컴퓨터의 "데스크톱"으로 전송합니다. 그런 다음 일반 메모장을 사용하여 파일을 엽니다.

메모장에서 파일을 연 후 "파일"을 마우스 왼쪽 버튼으로 클릭하고 "다른 이름으로 저장..."을 클릭합니다.

웹 개발 분야의 거의 모든 초보자는 조만간 프로젝트에서 코딩 문제에 직면하게 됩니다. 그리고 마치 서면 대본에 따르면 마치 증오심을 물리 치는 방법에 대한 질문으로 포럼의 폭격이 시작됩니다. 크라코자브리"대부분의 문제는 오랫동안 알려져 왔으며 아주 쉽게 치료할 수 있습니다. 알아두기만 하면 됩니다." 어디가 아픈지, 무슨 약을 먹어야 하는지"따라서 저는 이 문제를 일으키는 가장 일반적인 오류를 분석할 것을 제안하며, 제 권장 사항이 이러한 오류와의 추가 충돌을 방지할 수 있을 것입니다.

첫째, 강력히 추천합니다. 모든 문서가 동일한 인코딩을 사용했습니다.데이터베이스, 즉 문자열 데이터가 있는 필드는 동일한 인코딩을 가졌습니다. 데이터베이스 생성 시 설치되거나 각 개별 필드에 대한 비교를 지정할 수 있습니다. phpMyAdmin을 사용하여 데이터베이스를 생성하는 경우 어려움이 없어야 합니다. "데이터베이스" 탭 > "데이터베이스 생성" 필드에 미래 데이터베이스 이름 입력 > "비교" 드롭다운 목록 옆에 있습니다. SQL 쿼리를 사용하여 데이터베이스를 생성하는 경우 다음과 같이 작성하십시오.

존재하지 않는 경우 데이터베이스 생성 `my_db_name` 문자 설정 utf8 COLLATE utf8_general_ci;

인코딩 선택은 여러분의 몫이지만, "를 선택하는 것이 좋습니다. BOM이 없는 UTF-8"그리고 베이스 비교" utf8_general_ci" (유니코드 다국어, 대소문자 구분). 데이터베이스를 조작하기 전에 안전하게 플레이하고 덤프하는 것을 잊지 마세요! 여기서 BOM이 무엇인지 설명하지는 않겠습니다. 하지만 그것이 정말 비유적이고 정확하다면 UTF-16LE와 UTF-16BE 인코딩을 구별하기 위해 계획된 보이지 않는 마커이지만 어떤 이유에서인지 밝혀졌습니다. 소유권이 주장되지 않았으며 이제 웹을 방해합니다. 개발자는 안심할 수 있습니다.) BOM은 U+FEFF 기호처럼 보이며 문서 시작 부분에 있습니다. 왜 UTF-8인가? 여기에는 적어도 몇 가지 이유가 있습니다. 키릴 문자와 Al-Mutanabbi의 시 인용문 또는 한자를 모두 화면에 쉽게 표시할 수 있습니다. 이는 동일한 Windows-1251(cp1251) 인코딩에는 256자만 있는 반면 UTF-8에는 약 10만 개의 문자와 특수 문자, 그림 문자, 아이콘 등이 있기 때문입니다. 사이트에서 Ajax 요청을 사용하려는 경우 UTF-8 인코딩에 플러스가 추가됩니다. 왜냐하면 이 인코딩을 사용하면 XMLHttpRequest 객체가 친숙하지만 다른 인코딩을 사용하면 왜곡되고 때로는 실패해야 하기 때문입니다. 검색 엔진에서 색인을 생성하는 데 사용되는 동일한 사이트맵(sitemap.xml)은 이 파일이 UTF-8 인코딩으로 생성된 경우에만 작동합니다. 또한 이 인코딩은 PHP 함수가 얼마나 작동하는지에 대한 표준이자 W3C에서 권장하는 표준입니다.

새 문서를 만들면 모든 것이 명확하지만 인코딩을 변경하는 것이 바람직한 기존 문서는 어떻습니까? 가장 쉬운 방법 중 하나는 Notepad++에서 문서를 열고 " 인코딩"그리고 목록에" BOM 없이 UTF-8로 변환". 다음으로 인코딩을 정의하는 메타 태그를 변경합니다.

그리고 PHP 파일의 경우 적절한 헤더를 설정할 수 있지만 파일이 다른 문서에 포함되어 있지 않은 경우에만 해당 헤더가 이미 이전에 전송됩니다. 이는 메타태그의 헤더와 헤더 함수에 의해 전송된 헤더 모두에 적용됩니다.

Header("콘텐츠 유형: text/html; charset=utf-8");

브라우저에서 결과를 확인합니다. 여기에는 몇 가지 옵션이 있습니다.

  1. 모든 것이 잘 작동하고 문제가 종료되었습니다.
  2. 정적으로 등록된 데이터는 정상적으로 표시되지만 데이터베이스의 데이터는 여전히 "미친" 상태입니다.
  3. 아무것도 변경되지 않았으며 인코딩이 비뚤어진 상태로 유지됩니다.

마지막 지점부터 시작해 보겠습니다. 전용 서버 또는 VPS/VDS의 행복한 소유자는 지시문의 인코딩을 변경할 수 있습니다. default_charset php.ini 구성 파일에 있습니다. php.ini에 액세스할 수 없거나 하나의 사이트에 대한 인코딩을 변경해야 하는 경우 .htaccess 파일을 사용하고 다음을 작성할 수 있습니다.

# 원칙적으로 아래 줄이면 충분합니다: AddDefaultCharset UTF-8 # 그러나 때로는 추가 설정이 필요할 수도 있습니다: DefaultLanguage ru php_value default_charset "utf-8"

.htaccess 파일은 사이트 루트에 있습니다. 거기에서 찾지 못했다면 우리가 직접 만들어 보겠습니다. 일반 메모장에서 문서 작성 > " 다른 이름으로 저장">파일 형식 선택" 모든 파일" > "파일 이름" 필드에는 점과 확장자만 씁니다. " .htaccess".

두 번째 지점으로 넘어가겠습니다. 데이터베이스가 필요한 인코딩으로 변환되었지만 데이터베이스의 데이터가 페이지에 비뚤어지게 표시되는 경우입니다. 먼저 데이터베이스 자체의 심볼이 정상적으로 표시되는지 확인해야 합니다. 인코딩이 작동하지 않으면 구성 파일을 다시 확인하거나 데이터베이스에 연결한 후 즉시 요청할 수 있습니다.

이름 설정 utf8;

* 요청글 자체를 작성하지만 왜냐면.. MySQL 작업에 어떤 확장을 사용하는지 모르겠습니다. 몇 가지 옵션을 보여 드리겠습니다.

// 레거시 mysql_*의 경우 $db = mysql_connect("localhost", "username", "password"); mysql_select_db("db_name", $db); mysql_query("이름 설정 utf8"); // 5.3.6 이하의 PDO 및 PHP 버전의 경우 $dbh = new PDO("mysql:host=localhost;dbname=db_name", "username", "password"); $dbh->exec("이름 설정 utf8"); // PDO 및 PHP 버전 5.3.6 이상의 경우 객체 생성 시 직접 지정할 수 있습니다. $dbh = new PDO("mysql:host=localhost;dbname=db_name;charset=utf8", "username", "password "); // 또는 $db = new PDO("mysql:host=localhost;dbname=db_name", "username", "password", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); // MySQLi의 경우 $mysqli = new mysqli("localhost", "username", "password", "db_name"); $mysqli->set_charset("utf8");

"오래된 mysql_*" 문제를 다루었으므로 PHP 문서에서 빨간색으로 강조 표시된 텍스트에 주목하고 싶습니다. 생각해 볼 가치가 있습니다 ...
표준 문제 중 하나가 발생한 경우 위에 설명된 단계 중 일부 또는 전체를 수행하면 인코딩 문제가 긍정적으로 해결됩니다. 하지만 특이한 상황에서 유용할 수 있는 몇 가지 기능도 언급하고 싶습니다. 이에 대한 자세한 내용은 문서에서 읽을 수 있지만 자세한 내용은 다루지 않고 몇 가지 예만 들겠습니다.

Mb_internal_encoding() 이 함수를 사용하면 현재 스크립트 인코딩을 설정하거나 가져올 수 있습니다. mb_internal_encoding("UTF-8"); // 에코를 설정합니다 mb_internal_encoding(); // 인수 없이 - mb_http_input() 및 mb_http_output()을 얻습니다. HTTP 요청 또는 출력의 문자 인코딩을 결정, 설정 또는 가져오는 두 함수: print_r(mb_http_input("I")); // http 요청의 입력 데이터 인코딩을 결정합니다. mb_http_output("UTF-8"); // http 출력에 대한 인코딩을 설정합니다. echo mb_http_output(); // http 출력의 현재 문자 인코딩 가져오기 iconv() 이 함수는 문자열 문자를 원하는 인코딩으로 변환합니다: echo iconv("utf-8","cp1251","РџСЂРёРІРμС‚, РјРёСЂ!"); // 안녕하세요!

mb_convert_encoding() 이 함수는 iconv()와 유사하지만 제 생각에는 더 좋습니다. 더 적절하게 작동합니다. echo mb_convert_encoding("РџСЂРёРІРμС‚, РјРёСЂ!","cp1251","utf-8"); // 안녕하세요! 그리고 일반적으로 멀티바이트 문자열 작업을 위한 유사한 함수를 잊지 마세요. 대부분 이름은 동일하지만 접두사가 붙습니다. MB_ . 그 차이는 아주 쉽게 느낄 수 있습니다. 예를 들어 다음과 같은 기능을 살펴보겠습니다. strlen() 그리고 mb_strlen()

선의 길이를 측정하여 실험을 해보겠습니다.

// 내부 인코딩 설정 mb_internal_encoding("utf-8"); // 라틴 문자의 경우 차이가 없습니다. echo strlen("incode"); // 6 echo mb_strlen("incode"); // 6 // 그러나 키릴 문자로 표시됩니다. pichalka echo strlen("incode"); // 10 echo mb_strlen("incode"); // 5 . 그 차이는 아주 쉽게 느낄 수 있습니다. 예를 들어 다음과 같은 기능을 살펴보겠습니다.누군가는 이 현상을 설명할 필요가 없을 수도 있지만 초보자를 위해 설명하겠습니다. 키릴 문자는 2바이트로 인코딩됩니다.

문자 수가 아닌 문자열의 바이트 수를 정확하게 계산합니다. 따라서 5개의 키릴 문자에 2를 곱하면 10이 됩니다. 제가 착각하지 않았다면 한자는 일반적으로 3바이트로 인코딩되므로 앞으로 그러한 경우에는 오해가 발생하지 않도록 다음을 사용하십시오. 적절한 기능.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: