현재 위치: > 최신 기사 목록> 변환 _cyr_string을 사용하여 데이터베이스 읽기, 쓰기 및 인코딩을 통합하십시오

변환 _cyr_string을 사용하여 데이터베이스 읽기, 쓰기 및 인코딩을 통합하십시오

gitbox 2025-05-29

convert_cyr_string 함수는 무엇입니까?

Convert_cyr_string은 여러 키릴 문자 인코딩 (KOI8-R, Windows-1251, ISO-8859-5 등) 사이에서 문자열을 변환하는 PHP의 함수입니다. 기능 프로토 타입은 다음과 같습니다.

 string convert_cyr_string(string $str, string $from, string $to);
  • $ str : 문자열이 변환됩니다

  • $ $ : 현재 문자열의 인코딩 유형

  • $ to : 대상 인코딩 유형

지원되는 인코딩 식별자에는 다음이 포함됩니다.

  • K -KOI8-R

  • W -Windows-1251

  • I -ISO-8859-5

  • A - CP866

데이터베이스 작업이 변환 인코딩에 집중 해야하는 이유는 무엇입니까?

데이터베이스의 문자 세트 설정이 균일하지 않거나 읽기 및 쓰기 중에 PHP가 조정되지 않으면 저장된 데이터가 실제 표시된 데이터와 일치하지 않아 코드 문제가 발생합니다. 예를 들어:

  • 데이터베이스는 UTF8 에 의해 인코딩되지만 응용 프로그램은 작성시 Windows-1251을 사용하며 검은 코드가 나타납니다.

  • 응용 프로그램은 데이터베이스를 읽을 때 인코딩을 변환하지 않았으므로 데이터가 비정상적으로 표시됩니다.

일관된 인코딩을 보장하는 것이 차량 코드를 피하는 핵심입니다.

convert_cyr_string을 사용한 시나리오의 예

사용중인 데이터베이스가 Windows-1251 인코딩에 키릴 문자 데이터를 저장하고 기본적으로 UTF-8 인코딩에 PHP 스크립트 프로세스 문자열을 저장한다고 가정하면 변환을 위해 Convert_Cyr_String을 사용하여 변환 및 읽기에 데이터가 올바르게 서식 할 수 있습니다.

데이터베이스에 쓰기 전에 인코딩

 <?php
// 원래의 UTF-8 끈
$utf8_string = "Пример строки на русском";

// 할 것이다 UTF-8 변환 Windows-1251,데이터베이스에 편지를 준비하십시오
// 먼저 사용하십시오 iconv 전환하다 UTF-8 도착하다 Windows-1251,다시 사용하십시오 convert_cyr_string 인코딩을 조정하십시오
$win1251_string = convert_cyr_string(iconv("UTF-8", "Windows-1251//IGNORE", $utf8_string), 'w', 'w');

// 데이터베이스 쓰기 작업
// 그것이 확립되었다고 가정합니다 PDO 연결하다 $pdo
$sql = "INSERT INTO example_table (text_column) VALUES (:text)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':text', $win1251_string);
$stmt->execute();
?>

데이터베이스를 읽은 후 인코딩 및 변환

 <?php
// ~에서数据库读取끈,그것을 가정합니다 Windows-1251 코딩
$sql = "SELECT text_column FROM example_table WHERE id = 1";
$stmt = $pdo->query($sql);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

// 사용 convert_cyr_string 전환하다为 UTF-8,편리한 프론트 엔드 디스플레이
$win1251_string = $row['text_column'];
$utf8_string = iconv("Windows-1251", "UTF-8//IGNORE", convert_cyr_string($win1251_string, 'w', 'w'));

echo $utf8_string;
?>

운영 기술에 대한 완전한 분석

  1. 데이터베이스 문자 세트 <br>을 확인하십시오 SQL 문을 사용하여 데이터베이스 및 테이블의 문자 세트 구성을 확인하고 PHP 스크립트의 기본 인코딩과 일치하는지 확인하십시오.

  2. 통합 인코딩 및 변환 도구 <br> Convert_Cyr_String은 키릴 인코딩 변환에 중점을 두지 만 ICONV 또는 MB_CONVERT_ENCODING은 일반 UTF-8 및 기타 인코딩 변환에 더 일반적입니다.

  3. 전환 순서를 합리적으로 정리하십시오 <br> 복잡한 인코딩 변환을 위해서는 ICONV 또는 MB_CONVERT_ENCODING을 먼저 메인 변환으로 사용한 다음 Convert_Cyr_String을 사용하여 미세 조정하는 것이 좋습니다.

  4. 처리 변환 실패 <br> 변환을 사용할 때는 무지한 유효하지 않은 문자 플래그 (예 : "// 무시" )를 사용하여 프로그램 오류를 피하십시오.

  5. 데이터베이스에 연결할 때 문자 세트를 지정하십시오 <br> MySQL의 경우, 읽기 중 자동 변환으로 인한 혼란을 피하기 위해 charset = cp1251 과 같은 문자 세트 매개 변수를 포함하는 것이 좋습니다.

요약

Convert_Cyr_String 은 특정 키릴 인코딩 변환을 처리 할 때 간단하고 효과적인 도구이지만, 더 넓은 범위의 인코딩 변환 작업이 ICONVMBString 확장에 의존하는 데 더 적합합니다. 이러한 도구를 합리적으로 결합하고 데이터베이스 문자 세트를 설정함으로써 만 데이터베이스를 읽고 쓰고 쓰는 동안 인코딩이 일관되도록하고, 코드를 방지하며, 시스템 안정성을 향상시킬 수 있습니다.

인코딩을 일관되게 유지하면 데이터가 자연스럽게 명확하고 정확하며 사용자 경험이 그에 따라 개선됩니다.


 <?php
// 예:~에서UTF-8전환하다도착하다Windows-1251데이터베이스에 쓰십시오,再读取전환하다回UTF-8
function saveStringToDb(PDO $pdo, string $utf8_string) {
    // 트랜스 코딩:UTF-8 -> Windows-1251
    $win1251_string = iconv("UTF-8", "Windows-1251//IGNORE", $utf8_string);
    $win1251_string = convert_cyr_string($win1251_string, 'w', 'w');

    $sql = "INSERT INTO example_table (text_column) VALUES (:text)";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':text', $win1251_string);
    $stmt->execute();
}

function getStringFromDb(PDO $pdo, int $id): string {
    $sql = "SELECT text_column FROM example_table WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':id', $id);
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$row) {
        return '';
    }

    $win1251_string = $row['text_column'];
    // 트랜스 코딩:Windows-1251 -> UTF-8
    $utf8_string = iconv("Windows-1251", "UTF-8//IGNORE", convert_cyr_string($win1251_string, 'w', 'w'));

    return $utf8_string;
}
?>