>  기사  >  백엔드 개발  >  PHP가 Python 데이터베이스에서 잘못된 문자를 읽는 경우 어떻게 해야 합니까?

PHP가 Python 데이터베이스에서 잘못된 문자를 읽는 경우 어떻게 해야 합니까?

PHPz
PHPz원래의
2023-03-31 10:08:05637검색

PHP를 Python 데이터베이스에 연결할 때 문자 깨짐과 같은 문자 문제가 발생하는 경우 다음과 같은 이유 때문일 수 있습니다.

1. 일관성 없는 인코딩: PHP가 Python 데이터베이스에 연결할 때 일관성 없는 인코딩으로 인해 데이터 전송이 발생하는 경우가 있습니다. 문자가 나타납니다.

2. Python 데이터베이스 기본 인코딩: Python의 기본 인코딩은 utf-8인 반면, PHP는 인코딩에 ISO-8859-1을 사용합니다. PHP가 Python 데이터베이스에 연결할 때 인코딩 형식이 설정되지 않은 경우 기본 인코딩 형식이 사용되므로 데이터 전송 중에 데이터가 왜곡됩니다.

위의 문제에 대해 다음과 같은 방법으로 해결할 수 있습니다.

방법 1. 인코딩 형식 지정

PHP가 Python 데이터베이스에 연결할 때 인코딩 형식을 지정할 수 있습니다. 이 방법은 인코딩 형식이 일치하지 않는 상황에 적합합니다. 인코딩 형식은 mysqli_set_charset() 함수를 사용하여 PHP에서 지정할 수 있습니다.

예:

$db = mysqli_connect("host", "username", "password", "database");

mysqli_set_charset($db, "utf8");

인코딩 형식으로 utf8을 설정합니다.

Python에서는 인코딩 형식을 설정할 수도 있습니다. Python MySQL 커넥터를 사용하는 경우 연결을 설정할 때 인코딩 형식을 지정할 수 있습니다. 예:

import mysql.connector

cnx = mysql.connector.connect(user='[username]', password='[password]', host='[hostname]', database='[databasename]', charset='utf8')

charset='utf8'을 사용하여 인코딩 형식을 지정하세요.

방법 2: unicode_escape 인코딩 사용

PHP 프로그램과 Python 프로그램의 인코딩 형식이 일치하지 않는 경우 unicode_escape 인코딩 방법을 사용할 수 있습니다. Python에서는 repr() 함수를 사용하여 결과를 원시 문자열로 변환한 다음 PHP에서 Stripslashes() 함수를 사용하여 이를 복원할 수 있습니다.

예:

import mysql.connector

cnx = mysql.connector.connect(user='[username]', password='[password]', host='[hostname]', database='[databasename]')

query = "SELECT * FROM [table] WHERE [column] = %s"

cursor = cnx.cursor()

cursor.execute(query, ("[value]".decode('unicode_escape'),))

result = cursor.fetchall()

PHP에서는 다음을 사용할 수 있습니다.

$string = addslashes('a string that "needs" to be escaped! \x99');

echo stripcslashes($string);

방법 3. mb_convert_encoding() 함수

mb_convert_encoding()을 사용하여 인코딩을 다른 인코딩 방법으로 변환합니다. PHP 프로그램과 Python 프로그램의 인코딩 형식이 일치하지 않는 경우 mb_convert_encoding() 함수를 사용하여 읽은 데이터를 인코딩하고 변환할 수 있습니다.

예:

$db = mysqli_connect("host", "username", "password", "database");

$query = "SELECT * FROM [table] WHERE [column] = %s";

$stmt = mysqli_prepare($db, $query);

mysqli_stmt_bind_param($stmt, "s", $value);

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $column1, $column2);

while (mysqli_stmt_fetch($stmt)) {
    $column1 = mb_convert_encoding($column1, "UTF-8", "auto");
    $column2 = mb_convert_encoding($column2, "UTF-8", "auto");

    echo $column1 . " " . $column2;
}

mysqli_stmt_close($stmt);

mysqli_close($db);

위의 방법은 PHP가 Python 데이터베이스에 연결할 때 왜곡되는 문제를 효과적으로 해결할 수 있습니다. 사용 중에는 실제 상황에 따라 가장 적절한 방법을 선택해야 합니다.

위 내용은 PHP가 Python 데이터베이스에서 잘못된 문자를 읽는 경우 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.