페이지 인코딩 예 및 인코딩 오류. 웹 페이지의 잘못된 인코딩 문제 해결 태그는 문서 유형과 인코딩을 결정합니다.

15.03.2016

아직 아님


모두 안녕!
우리는 계속해서 HTML의 기초를 배웁니다. 이번 강의에서는 HTML 인코딩을 지정하는 방법웹 사이트(웹 페이지)의 경우.
웹 페이지의 인코딩을 지정하는 방법을 모르면 페이지를 읽을 수 없게 될 수 있으므로 이 학습은 매우 중요합니다. 당신은 "어때요, 할 수 없나요? "라고 묻습니다.
잘못된 인코딩으로 내 블로그가 어떻게 보이는지 보여드리겠습니다.

그래서, HTML 인코딩- 이들은 알파벳의 코드와 기호의 대응 표입니다. 즉, 우리 컴퓨터는 인코딩을 통해 코드를 이해할 수 있는 읽을 수 있는 문자로 변경합니다.

웹 페이지 문자가 어떤 인코딩에 있는지 브라우저에 알리려면 태그 사이에 작성해야 합니다. 다음은 메타 태그입니다.

코드에 "인코딩 이름"이라는 단어가 있습니다. 여기에서 HTML 인코딩을 지정해야 합니다.
일반적으로 이것은 utf-8 또는 windows-1251 입니다.

인코딩UTF-8:

부호화을 위한 창-1251:

사이트 또는 웹 페이지의 인코딩을 브라우저에 알리는 것을 잊은 경우 브라우저는 인코딩을 자동으로 결정하려고 시도하지만 항상 올바르게 작동하지는 않습니다. 결국 결과는 위의 그림에서 보여준 결과가 될 것입니다.

연습을 계속합시다.

를 사용하여 HTML 문서를 만드는 방법
utf-8 인코딩

"모든 프로그램" => "보조 프로그램" => "메모장" :

<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p> <head></head>다음은 메타 태그입니다.</p><p> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </p><p> <html> <head> <title>StepkinBlog의 내 첫 HTML 페이지..<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p>메모장에서 클릭 <span>"파일" => "다른 이름으로 저장..."</span>:</p> <p><img src='https://i0.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-3.png' width="100%" loading=lazy loading=lazy></p> <p><br>여기서 "Encoding:" 항목은 "UTF-8"을 지정합니다. <br>"저장"을 클릭합니다.</p> <p><img src='https://i2.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-4.png' width="100%" loading=lazy loading=lazy></p><p>이미지를 확대하시겠습니까?</p> <h3><span>windows-1251 인코딩으로 HTML 문서를 만드는 방법</span></h3> <p>표준 메모장을 엽니다. <span><i>"모든 프로그램" => "보조 프로그램" => "메모장"</i> </span>.<br>다음으로 표준 HTML 코드를 메모장에 붙여넣습니다.</p><p> <html> <head> <title>StepkinBlog의 내 첫 HTML 페이지..<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p>이제 웹 페이지가 저장되는 인코딩을 지정합니다. 이렇게 하려면 태그 사이에 배치하세요. <head></head>다음은 메타 태그입니다.</p><p> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </p><p>결과는 다음과 같습니다(4번 줄).</p><p> <html> <head> <title>StepkinBlog의 내 첫 HTML 페이지..<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p>메모장에서 클릭 <span>"파일" => "다른 이름으로 저장..."</span>:</p> <p><img src='https://i1.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-5.png' width="100%" loading=lazy loading=lazy></p> <p>항목 "파일 이름"은 웹 페이지 이름을 라틴어로 쓰고 확장자는 ".html"입니다. 나는 당신이 첫 수업에서 이것을 기억한다고 생각합니다. <br>항목 "인코딩:"은 "ANSI"를 지정합니다. <br>"저장"을 클릭합니다.</p> <p><img src='https://i2.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-6.png' width="100%" loading=lazy loading=lazy></p> <p>그게 다야!</p> <p>대부분의 웹마스터는 UTF-8 인코딩을 선택합니다. HTML 학습 단계에서 아직 필요하지 않은 정보를 로드하는 것이 두렵기 때문에 이유를 말하지 않겠습니다.</p> <p>예를 들어 메모장에서 다음 코드를 설정합니다.</p><p> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </p><p>"ANSI"를 저장할 때 지정합니다.</p> <p><img src='https://i2.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-6.png' width="100%" loading=lazy loading=lazy></p> <p>이것이 잘못되었으므로 결과는 다음과 같습니다.</p> <p>이러한 결과를 피하려면 웹 페이지를 올바르게 저장하십시오.</p> <p>이전 게시물 <br></span> <span>다음 포스트 <br></p> <p>웹 개발 분야의 거의 모든 초보자는 조만간 프로젝트에서 코딩 문제에 직면합니다. 그런 다음 작성된 스크립트에 따라 포럼의 폭격은 증오를 물리 치는 방법에 대한 질문으로 시작됩니다. " <b>크라코자브리</b>". 대부분의 문제는 오랫동안 알려져 왔으며 매우 쉽게 처리됩니다. " <i>어디가 아프고 어떤 약을 먹어야</i>". 따라서 나는 이 문제가 나타나는 가장 일반적인 오류를 분석할 것을 제안하며 내 권장 사항이 추가 충돌로부터 당신을 구할 수 있습니다.</p> <p>첫째, 나는 그것을 강력히 추천합니다 <span>모든 문서는 동일한 인코딩을 사용했습니다.</span>데이터베이스, 즉 문자열 데이터가 있는 필드는 동일한 인코딩을 가졌습니다. 데이터베이스가 생성될 때 설정되거나 각 개별 필드에 대한 비교를 지정할 수 있습니다. phpMyAdmin을 사용하여 데이터베이스를 생성하는 경우 어려움이 없습니다. "데이터베이스" 탭 > "데이터베이스 생성" 필드에 향후 데이터베이스의 이름을 입력하고 > "비교" 드롭다운 목록 옆에 있습니다. SQL 쿼리로 데이터베이스를 생성하는 경우 다음과 같이 작성하십시오.</p><p>존재하지 않는 경우 데이터베이스 생성 `my_db_name` 문자 세트 utf8 COLLATE utf8_general_ci;</p><p>인코딩 선택은 귀하에게 달려 있지만 문서에 대해 선택하는 것이 좋습니다. " <b>BOM이 없는 UTF-8</b>" 및 기본 비교 " <b>utf8_general_ci</b>" (<i>유니코드 다국어, 대소문자 구분</i>). 데이터베이스를 조작하기 전에 안전하게 플레이하고 덤프하는 것을 잊지 마십시오! 여기서 BOM이 무엇인지 설명하지는 않겠지 만 매우 비유적이고 손가락에 있다면 이것은 UTF-16LE와 UTF-16BE 인코딩을 구별하기 위해 계획된 보이지 않는 마커이지만 어떤 이유로 밝혀졌습니다. 청구되지 않았으며 이제 웹을 방해합니다. 개발자는 평화롭게 살고 있습니다.) BOM은 U+FEFF 기호처럼 보이며 문서의 시작 부분에 정착합니다. 왜 여전히 UTF-8입니까? 여기에 적어도 몇 가지 이유가 있습니다... 키릴 문자와 Al-Mutanabbi의 시 인용문 또는 한자를 화면에 쉽게 표시할 수 있습니다. 동일한 windows-1251 인코딩(cp1251)에는 256자만 있는 반면 UTF-8에는 약 10만 개의 문자와 특수 문자, 그림 문자, 아이콘 등이 있기 때문입니다. 사이트에서 ajax 요청을 사용하려는 경우 XMLHttpRequest 개체가 이 인코딩과 친구이기 때문에 UTF-8 인코딩에 플러스를 추가하고 다른 사람과 변태해야 하며 때로는 실패할 수도 있습니다. 검색 엔진에서 인덱싱하는 데 사용되는 동일한 사이트맵(sitemap.xml)은 이 파일이 UTF-8 인코딩으로 생성된 경우에만 작동합니다. 또한 이 인코딩은 많은 PHP 함수가 작동하는 표준이며 W3C에서 권장하는 표준입니다.</p> <p>새 문서를 만들 때 모든 것이 명확하지만 인코딩을 변경하는 것이 바람직한 기존 문서는 어떻습니까? 가장 쉬운 방법 중 하나는 Notepad++에서 문서를 열고 " <i>인코딩</i>" 그리고 목록에서 " <i>BOM 없이 UTF-8로 변환</i>". 다음으로 인코딩 정의를 사용하여 메타 태그를 변경합니다.</p><p>그리고 php 파일의 경우 적절한 헤더를 설정할 수 있지만 해당 헤더가 이미 이전에 전송되는 다른 문서에 파일이 포함되어 있지 않은 경우에만 가능합니다. 이는 메타 태그의 헤더와 헤더 함수에서 보낸 헤더 모두에 적용됩니다.</p><p>Header("콘텐츠 유형: 텍스트/html; charset=utf-8");</p><p>브라우저에서 결과를 확인합니다. 여기에는 몇 가지 옵션이 있을 수 있습니다.</p> <ol><li>모든 것이 잘 표시되고 문제가 종료됩니다.</li> <li>정적으로 작성된 데이터는 정상적으로 표시되지만 데이터베이스의 데이터는 여전히 "미친" 상태입니다.</li> <li>변경된 사항이 없으며 인코딩이 비뚤어진 상태로 남아 있습니다.</li> </ol><p>마지막 요점부터 시작하겠습니다. 전용 서버 또는 VPS/VDS의 행복한 소유자는 지시문의 인코딩을 변경할 수 있습니다. <b>default_charset</b> php.ini 구성 파일에서. php.ini에 대한 액세스 권한이 없거나 한 사이트에 대한 인코딩만 변경해야 하는 경우 다음을 작성하여 .htaccess 파일을 사용할 수 있습니다.</p><p># 원칙적으로 아래 줄이면 충분합니다: AddDefaultCharset UTF-8 # 그러나 때때로 추가 설정이 필요할 수 있습니다: DefaultLanguage ru php_value default_charset "utf-8"</p><p>.htaccess 파일은 사이트의 루트에 있습니다. 거기에서 찾지 못했다면 직접 만듭니다. 일반 메모장에서 문서 작성> " <i>다른 이름으로 저장</i>"> 파일 형식 선택" <i>모든 파일</i>"> "파일 이름" 필드에 마침표와 확장자 " <b>.htaccess</b>".</p> <p>데이터베이스가 원하는 인코딩으로 전송되었지만 그 데이터가 페이지에 비뚤어지게 표시되는 경우 두 번째 지점으로 이동하겠습니다. 먼저 데이터베이스 자체의 문자가 정상적으로 표시되는지 확인해야 합니다. 인코딩이 "부동"하지 않은 경우 구성 파일에 다시 호소하거나 데이터베이스에 연결한 직후 요청을 할 수 있습니다.</p><p>세트 이름 utf8;</p><p><b>* </b>나는 요청의 텍스트를 직접 작성하지만 이후 MySQL 작업에 어떤 확장을 사용하는지 모르겠습니다. 몇 가지 옵션을 보여 드리겠습니다.</p><p>// 레거시 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");</p><p>"오래된 mysql_*" 문제를 제기했기 때문에 php 문서에서 빨간색으로 강조 표시된 텍스트에 주의를 환기시키고 싶습니다. 생각할 가치가... <br>표준 문제 중 하나가 있는 경우 위의 단계 중 일부 또는 전부를 수행하면 인코딩 문제가 긍정적으로 해결됩니다. 그러나 비표준 상황에서 유용할 수 있는 몇 가지 기능에 대해서도 언급하고 싶습니다. 문서에서 자세한 내용을 읽을 수 있으며 자세한 내용은 생략하고 몇 가지 예만 설명하겠습니다.</p><p>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","PџСЂРёРІРµС‚, РјРёСЂ!"); // 안녕하세요 세계! mb_convert_encoding() 이 함수는 iconv()와 유사하지만 제 생각에는 더 나은 것 같습니다. 더 적절하게 작동합니다. echo mb_convert_encoding("Привет, РјРёСЂ!","cp1251","utf-8"); // 안녕하세요 세계!</p><p>그리고 일반적으로 멀티 바이트 문자열 작업을 위한 함수의 유사점을 잊지 마십시오. 대부분의 경우 이름은 같지만 접두사가 붙습니다. <b>mb_</b>. 차이를 느끼기 쉽습니다. 예를 들어 다음과 같은 기능을 수행하십시오. <b>strlen()</b>그리고 <b>mb_strlen()</b>줄의 길이를 측정하여 실험을 수행하십시오.</p><p>// 내부 인코딩 설정 mb_internal_encoding("utf-8"); // 라틴 문자의 차이 없음 echo strlen("incode"); // 6 echo mb_strlen("인코드"); // 6 // 그러나 키릴 문자를 사용하면 - pichalka echo strlen("incode"); // 10 에코 mb_strlen("인코드"); // 5</p><p>누군가 이 현상을 설명할 필요가 없을 수도 있지만 초보자를 위해 설명하겠습니다. 키릴 문자는 2바이트로 인코딩되며 <b>strlen()</b>문자 수가 아니라 문자열의 바이트 수를 정확히 계산합니다. 따라서 5개의 키릴 문자에 2를 곱하면 10이 됩니다. 제가 착각하지 않았다면 한자는 일반적으로 3바이트로 인코딩되므로 앞으로 이러한 경우 오해가 없도록 다음을 사용하십시오. 적절한 기능.</p> <p>이러한 솔루션은 일반적인 경우를 위한 것이며 대부분의 경우 문제를 해결합니다. 그러나이 모든 방법이 작동하지 않는 상황이있는 경우 여기에 작성하십시오. 함께 파악하고 새로운 "두통에 대한 레시피"로 기사를 보완하겠습니다.) 휴가를 보내겠습니다.</p> 1. Myfile.html 파일이 있습니다. <br>2. 유니코드 -> UTF-8 인코딩으로 저장해야 합니다. <b>솔루션 1</b> <ol><li>텍스트 편집기에서 Myfile.html 열기 <b>공책</b>.</li><li>"다른 이름으로 저장..."을 선택합니다.</li><li>UTF-8 인코딩을 선택합니다.</li><li>버튼을 클릭하십시오 - 저장.</li> </ol><br><img src='https://i0.wp.com/u4ilka.kcbux.ru/Raznoe/image/raz-019-02.png' width="100%" loading=lazy loading=lazy><b>솔루션 2</b> <ol><li>텍스트 편집기에서 Myfile.html 열기 <b>메모장++</b>(PSPad 편집기도 있습니다)</li><li>메뉴 -> 인코딩. <br>여기에서 우리가 연 파일의 인코딩을 볼 수 있습니다(Notepad++가 자체적으로 결정함).</li><li>선택하다 <span>BOM 없이 UTF-8로 변환</span>(BOM - 바이트 순서 표시). <br>("UTF-8 without BOM" 인코딩이 선호되며 "UTF-8"과 다릅니다.)</li><li>메뉴 -> 파일 -> 저장.</li> </ol><br><img src='https://i0.wp.com/u4ilka.kcbux.ru/Raznoe/image/raz-019-03.png' width="100%" loading=lazy loading=lazy><h4>브라우저에 의한 인코딩 결정</h4>우리는 이 HTML 파일에 어떤 인코딩이 설정되어 있는지 브라우저에 알려줍니다. <br>이것은 META 태그를 사용하여 수행됩니다. 1) <meta http-equiv="Content-Type" content="text/html; charset=utf-8">위의 예는 다운로드한 HTML 파일이 utf-8 인코딩으로 저장되었음을 브라우저에 알려줍니다. HTML 파일이 windows-1251 인코딩으로 저장된 경우: 2) <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <b>중요한!</b> <br>파일을 변환할 때 <b>변경하는 것을 잊지 마세요</b> META 태그의 지시문을 실제 지시문으로 바꿉니다. <br>META 태그에 하나의 인코딩이 지정되어 있고 파일이 다른 인코딩으로 저장되면 화면에 "횡설수설"이 표시됩니다. <p>3) <b>만약에</b>필요한 인코딩이 META 태그에 지정되어 있고 사이트에 여전히 "abracadabra"가 표시되면 호스팅(웹 서버)에서 사이트 설정을 확인해야 합니다. <br>일반적으로 사이트 설정의 호스팅에서 인코딩은 utf-8입니다. <br>호스팅 설정에서 windows-1251 인코딩을 지정하는 경우 설정을 utf-8로 변경해야 합니다.</p> <p>내 블로그 독자 여러분 안녕하세요. 오늘 우리는 인코딩에 대해 이야기 할 것입니다. 그것에 관한 내 기사를 읽으면 인터넷의 모든 문서가 우리가 보던 형식으로 저장되지 않는다는 것을 알고 있습니다. 그것은 사람이 이해할 수 없는 기호와 기호의 도움으로 작성되었습니다. 텍스트도 마찬가지입니다.</p> <p>여러 가지 인코딩이 있으므로 때때로 모바일 애플리케이션에서 책을 열거나 웹 사이트에 기사를 업로드할 때 이해할 수 없는 문자가 표시되면 설정에서 일부 값을 변경하면 친숙한 알파벳이 표시됩니다. 눈에.</p> <p>Windows-1251 인코딩 - 사이트를 만들 때 무엇을 의미하며 어떤 문자를 사용할 수 있으며 오늘날 최고의 솔루션입니까? 이 모든 것이 오늘 기사에 있습니다. 항상 그렇듯이 간단한 언어로 가능한 한 명확하고 최소한의 용어로.</p> <h2>약간의 이론</h2> <p>내가 말했듯이 컴퓨터나 인터넷의 모든 문서는 이진 코드로 저장됩니다. 예를 들어 ASCII 인코딩을 사용하는 경우 문자 "K"는 10001010으로 작성되고 Windows 1251은 이 숫자 아래에 Љ 기호를 숨깁니다. 결과적으로 브라우저나 프로그램이 다른 테이블에 액세스하여 ASCII 대신 Windows 1251 코드를 읽으면 독자는 완전히 이해할 수 없는 문자를 보게 됩니다.</p> <p>질문은 논리적입니다. 코드가있는 많은 테이블을 만드는 데 필요한 이유는 무엇입니까? 사실 러시아어 알파벳 외에도 영어, 독일어, 중국어도 있습니다. 일부 추정에 따르면 약 200,000자가 있습니다. 그러나 나는 일본어를 기억하면서 이러한 통계를 실제로 신뢰하지 않습니다.</p> <p>대문자와 소문자에 대한 고유한 코드를 작성해야 하며 쉼표, 대시 등이 있다는 것을 잊지 마십시오.</p> <p>테이블에 기호가 많을수록 각각의 코드가 길어지므로 문서의 무게가 커집니다.</p> <p><img src='https://i1.wp.com/start-luck.ru/wp-content/uploads/3-162.jpg' align="center" width="100%" loading=lazy loading=lazy></p> <p>책 한 권의 무게가 4GB라고 상상해 보십시오! 컴퓨터의 여유 공간을 모두 차지하여 로드하는 데 시간이 오래 걸립니다. 다운로드 결정은 어려운 결정이었을 것입니다.</p> <p>웹사이트에 대해 생각해보면 어떤 일이 일어날지 생각하는 것이 일반적으로 무섭습니다. 한 시간 이상 고속 광섬유에서도 각 페이지가 열렸습니다! 휴대폰은 안전하게 버릴 수 있을 것 같아요. 4G에서도 야외에서 사용하시겠습니까? 나는 의심한다.</p> <p>이러한 이유로 모든 프로그래머는 한때 자신의 기호 테이블을 만들려고 했습니다. 사용하기 편리하고 무게가 최적으로 유지됩니다.</p> <p>예를 들어 Microsoft는 러시아어를 사용하는 세그먼트를 위해 windows-1251을 만들었습니다. 확실히 장점과 단점이 있습니다. 여느 제품과 마찬가지로요.</p> <p>이미 인터넷의 전체 페이지 중 2%만이 1251로 작성되어 있습니다. 대부분의 웹마스터는 UTF-8을 사용합니다. 왜 그런 겁니까?</p> <h2><span>단점과 장점</span></h2> <p>UTF-8은 windows-1251과 달리 범용 인코딩이며 다양한 알파벳의 문자를 포함합니다. Teulu, Swahili, Lao, Maltese 등 일반적으로 모든 언어가있는 UTF-128도 있습니다.</p> <p><img src='https://i0.wp.com/start-luck.ru/wp-content/uploads/citata-2-48.jpg' align="center" width="100%" loading=lazy loading=lazy></p> <p>UTF-8은 1251에서와 같이 열악하고 문자는 공간을 훨씬 적게 차지하며 메모리는 1바이트만 차지합니다. UTF에는 다른 언어의 희귀 문자나 특수 문자가 있습니다. 무게는 각각 5-6바이트이지만 문서에서는 거의 사용되지 않습니다.</p> <p>이 인코딩은 더 신중하므로 대부분의 응용 프로그램에서 기본적으로 사용합니다. 즉, 프로그램에 어떤 인코딩을 사용하고 있는지 알려주지 않으면 가장 먼저 확인하는 것은 UTF-8 입니다.</p> <p>웹사이트용 html 문서를 만들 때 레코드를 해독할 때 어떤 테이블을 찾아야 하는지 브라우저에 알려줍니다.</p> <p>이렇게 하려면 다음 데이터를 head 태그에 삽입해야 합니다. 문자 "charset =" 뒤에는 아래 예와 같이 utf 또는 windows가 옵니다.</p> <table><tr><td class="code"> <<span>메타 http-equiv="콘텐츠 유형" 콘텐츠= <span>"텍스트/html; charset=windows-1251"</span>> </span> </td> </tr></table><p><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></p> <p><img src='https://i2.wp.com/start-luck.ru/wp-content/uploads/4-151.jpg' align="center" width="100%" loading=lazy loading=lazy></p> <p>나중에 이 암호 해독 테이블을 사용하여 무언가를 변경하고 알바니아어로 구문을 삽입하려는 경우 인코딩이 이 언어를 지원하지 않기 때문에 아무 것도 작동하지 않습니다. UTF-8을 사용하면 아무 문제 없이 이 작업을 수행할 수 있습니다.</p> <p>사이트의 올바른 생성에 관심이 있으시면 Mikhail Rusakov 과정을 추천해 드릴 수 있습니다. " <i><b><span>사이트의 A부터 Z까지 제작 및 홍보</span> </b> </i>».</p> <p><br><img src='https://i1.wp.com/start-luck.ru/wp-content/uploads/1-174.jpg' align="center" width="100%" loading=lazy loading=lazy></p> <p>, JavaScript 및 XML에 영향을 미치는 256개의 강의가 포함되어 있습니다. 프로그래밍 언어 외에도 사이트에서 수익을 창출하는 방법, 즉 더 빨리 수익을 창출하는 방법을 이해할 수 있습니다. 필요한 모든 것을 이렇게 자세하게 설명하는 몇 안 되는 과정 중 하나입니다.</p> <p>나는 지금 1년 동안 공부하고 있다. <i><b><span>블로거 Alexander Borisov 학교에서</span> </b> </i>. 몇 배 더 많은 시간이 걸리고 끝이 아직 보이지 않지만 덜 철저하고 규율이 있습니다. 계속 발전하도록 동기를 부여합니다.</p> <p>질문이 있으면 인터넷에서 검색할 필요가 없습니다. 항상 좋은 멘토가 있습니다.</p> <p><br><img src='https://i0.wp.com/start-luck.ru/wp-content/uploads/5-131.jpg' align="center" width="100%" loading=lazy loading=lazy></p> <p>내가 주제에서 벗어난 것. 인코딩으로 돌아가 봅시다.</p> <h2>목욕 베이스</h2> <p>PHP에 관해서는 일반적으로 모든 것이 무섭습니다. 나는 이미 데이터베이스에 대해 이야기했으며 사이트 속도를 높이는 데 사용됩니다. 평소에는 연락을 안 하다가 사이트 이전을 해야 하는 상황이 되면 불편해집니다.</p> <p>업무 경험, 서비스 기간 및 서비스 기간에 관계없이 모든 사람에게 어려움이 발생합니다. 데이터베이스의 일부 페이지에는 windows-1251에 사용 가능한 모든 문자가 포함될 수 있으며, 예를 들어 다른 인코딩의 페이지 템플릿에는 다른 페이지가 포함될 수 있습니다.</p> <p>전송이 필요할 때까지 모든 것이 올바르게 작동하지는 않지만 작동합니다. 그러나 이동 후 문제가 시작됩니다. 이상적으로는 UTF나 Windows-1251 중 하나만 사용해야 하지만, 사실 이러한 단점은 누구에게나 항상 발생합니다.</p> <p>복호화를 일관되게 하려면 코드 mysql_query("SET NAMES cp1251")를 입력해야 합니다. 이 경우 변환은 다른 프로토콜인 cp1251을 사용하여 수행됩니다.</p> <p><img src='https://i2.wp.com/start-luck.ru/wp-content/uploads/5-138.jpg' align="center" width="100%" loading=lazy loading=lazy></p> <h2>htaccess</h2> <p>사이트에서 지속적으로 1251을 사용하기로 결정했다면 htaccess 파일을 찾거나 만들어야 합니다. 구성 설정을 담당합니다. 모든 것이 서로 맞도록 세 줄을 더 추가해야 합니다.</p> <table><tr><td class="code">DefaultLanguage ko; AddDefaultCharset windows-1251; php_value default_charset "cp1251"</td> </tr></table><p>DefaultLanguage ko; AddDefaultCharset windows-1251; php_value default_charset "cp1251"</p> <p>여전히 UTF-8 사용을 고려하는 것이 좋습니다. 더 대중적이고 단순하며 풍부합니다. 지금 어떤 결정을 내리든 나중에 수정할 수 있다는 것이 중요합니다. 이 인코딩을 사용하여 사이트의 영어 버전을 추가하는 것이 훨씬 쉬울 것입니다. 아무것도 고칠 필요가 없습니다.</p> <p>결정은 당신에게 달려 있습니다. 뉴스레터를 구독하여 다른 사람의 실수를 반복하지 않도록 가능한 한 빨리 공부할 수 있는 곳과 어떤 블로거가 더 많은 방문자를 확보하는지 알아보십시오.</p> <p>우리가 다시 만날 때까지 그리고 당신의 노력에 행운을 빕니다.</p> <p>인코딩이 올바르지 않으면 사이트 전체 또는 일부가 "cryapozables"로 표시됩니다. 텍스트를 읽을 수 없게 만드는 모호한 문자. 웹 서버 인코딩이 잘못 설정되었거나 설정이 없는 경우 이러한 상황이 발생할 수 있습니다. 가능한 옵션 및 문제 해결 방법 고려</p> <h2>HTML 페이지의 잘못된 인코딩 <br></h2> <p>테스트 파일을 만들어 보겠습니다.</p><p>sudo gedit /var/www/html/encoding.html</p><p>복사해 봅시다:</p><p> <html> <head> <title>인코딩 확인



브라우저 http://localhost/encoding.html에서 이 파일을 열어봅시다.

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

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

다음과 같이 보이도록 이 줄을 테스트 파일에 추가해 보겠습니다.

인코딩 확인

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



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

파일 인코딩이 다음과 다른 경우 UTF-8, 대신 넣어 창-1251또는 웹 페이지의 인코딩과 일치하는 것입니다. 파일 인코딩을 결정하는 방법을 알아보려면 를 참조하십시오.

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

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

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

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

그리고 그 안에 교체

AllowOverride 없음

AllowOverride 모두

그런 다음 서버를 다시 시작해야 합니다.

sudo systemctl 재시작 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 +문자셋=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("콘텐츠 유형: 텍스트/html; charset=utf-8");

RSS 피드의 다른 옵션:

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

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

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

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

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

먼저 테이블의 인코딩을 결정해야 합니다. 에서 볼 수 있습니다. phpMyAdmin:

칼럼에 주목 비교”, 항목 “ utf8_unicode_ci"는 인코딩이 사용됨을 의미합니다. UTF-8.

phpMyAdmin 없이도 MySQL DBMS에 접속하여 테이블 인코딩 확인이 가능합니다. 이를 위해:

MySQL -u 루트 -p

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

데이터베이스 표시;

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

사용 information_schema;

테이블 이름을 잊어버린 경우 다음을 실행합니다.

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에 연결할 때마다 쿼리를 순서대로 실행해야 합니다.

SET NAMES UTF8 SET CHARACTER SET UTF8 SET character_set_client = UTF8 SET character_set_connection = UTF8 SET 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 character_set_results = 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 "문자셋"

웹 사이트에 대해 선택할 인코딩

질문이 있으신가요?

오타 신고

편집자에게 보낼 텍스트: