복붙노트

MySQL과 PHP : 키릴 문자가있는 UTF-8

PHP

MySQL과 PHP : 키릴 문자가있는 UTF-8

MySQL 테이블에 키릴 문자 값을 삽입하려하지만 인코딩 문제가 있습니다.

PHP :

<?php

$servername = "localhost";
$username = "a";
$password = "b";
$dbname = "c";

$conn = new mysqli($servername, $username, $password, $dbname);

mysql_query("SET NAMES 'utf8';"); 
mysql_query("SET CHARACTER SET 'utf8';"); 
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';"); 

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "UPDATE  `c`.`mainp` SET  `search` =  'test тест' WHERE  `mainp`.`id` =1;";

if ($conn->query($sql) === TRUE) {   
}
$conn->close();

?>

MySQL :

| id |    search   |            
| 1  |   test ав |

참고 : PHP 파일은 utf-8, 데이터베이스 데이터 정렬 utf8_general_ci입니다.

해결법

  1. ==============================

    1.실제 문제는 어딘가에 문자 세트 문제입니다. 다음은 애플리케이션에 적합한 문자 세트를 얻을 수있는 몇 가지 지침입니다. 이것은 PHP / MySQL 애플리케이션을 개발할 때 발생할 수있는 일반적인 문제의 대부분을 다룹니다.

    실제 문제는 어딘가에 문자 세트 문제입니다. 다음은 애플리케이션에 적합한 문자 세트를 얻을 수있는 몇 가지 지침입니다. 이것은 PHP / MySQL 애플리케이션을 개발할 때 발생할 수있는 일반적인 문제의 대부분을 다룹니다.

    전체 코드 파이프 라인의 모든 부분을 UFT-8로 설정해야합니다. 그렇지 않으면 응용 프로그램에서 깨진 문자가 발생할 수 있습니다.

    이 목록 외에도 charset을 지정하기위한 특정 매개 변수가있는 함수가있을 수 있습니다. 설명서에서 이에 대해 알려줍니다 (예 : htmlspecialchars ()).

    멀티 바이트 문자에 대한 특수 함수도 있습니다. 예를 들면 : strtolower ()는 멀티 바이트 문자를 낮추지 않습니다. mb_strtolower ()를 사용해야하므로,이 라이브 데모를 참조하십시오.

    mysql과 PDO로 UTF-8 설정하기

  2. ==============================

    2.해결책:

    해결책:

    mysql_query ( "SET NAMES 'utf8';"); > $ mysqli-> set_charset ( 'utf8');

  3. from https://stackoverflow.com/questions/31897407/mysql-and-php-utf-8-with-cyrillic-characters by cc-by-sa and MIT license