လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဒေတာဘေ့စ်ဖတ်ခြင်း, အရေးအသားနှင့် encoding ကို unify လုပ်ရန် convert_Cyr_string ကိုသုံးပါ

ဒေတာဘေ့စ်ဖတ်ခြင်း, အရေးအသားနှင့် encoding ကို unify လုပ်ရန် convert_Cyr_string ကိုသုံးပါ

gitbox 2025-05-29

Convert_Cyr_string function ကဘာလဲ။

Convert_Cyr_String သည် PHP ၏လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 string convert_cyr_string(string $str, string $from, string $to);
  • $ str : ပြောင်းလဲခံရဖို့ string ကို

  • $ မှ - လက်ရှိ string ကို၏ encoding အမျိုးအစား

  • $ to : Target Encoding အမျိုးအစား

ပံ့ပိုးထားသော encoding encifiers များပါဝင်သည်:

  • k - koi8-r

  • W - Windows-1251

  • i - ISO-8859-5

  • A - CP866

ဒေတာဘေ့စ်လုပ်ငန်းများသည် encoding ပြောင်းလဲခြင်းကိုအာရုံစိုက်ရန်အဘယ်ကြောင့်လိုအပ်သနည်း။

ဒေတာဘေ့စ်၏ဇာတ်ကောင် settings သည်ယူနီဖောင်းမဟုတ်ဘဲ PHP သည်စာဖတ်ခြင်းနှင့်အရေးအသားအတွင်းအဆင်သင့်မဖြစ်သေးပါကသိုလှောင်ထားသည့်အချက်အလက်များကိုအမှန်တကယ်ပြသသည့်အချက်အလက်များနှင့်ကိုက်ညီမှုရှိစေပြီး, ဥပမာအားဖြင့်:

  • ဒေတာဘေ့စ်ကို UTF8 မှ encoded သည်, သို့သော်အက်ပလီကေးရှင်းသည် Windows-1251 ကို အသုံးပြု. စာဖြင့်ရေးသားသည့်အခါ concled code ပေါ်လာလိမ့်မည်။

  • ဒေတာဘေ့စ်ကိုဖတ်သည့်အခါ application သည် encoding ကို dataBase ကိုဖတ်ရှုရာတွင်ပြောင်းလဲခြင်းမပြုပါ။

တသမတ်တည်း encoding သေချာစေရန် carbled code ကိုရှောင်ရှားရန်သော့ချက်ဖြစ်ပါတယ်။

Convert_Cyr_String ကိုအသုံးပြုပြီးဇာတ်လမ်းဥပမာ

သင်အသုံးပြုနေသောဒေတာဘေ့စ်သည် Windows-1251 encoding ရှိ Cyrillic ဇာတ်ကောင်အချက်အလက်များကိုသိုလှောင်ခြင်းနှင့် PHP scripts process strings ကို UTF-8 encoding တွင် သိုလှောင် ခြင်း,

ဒေတာဘေ့စမှရေးသားခြင်းမပြုမီ encoding

 <?php
// မူရင်းဖြစ်သော UTF-8 ကြိုး
$utf8_string = "Пример строки на русском";

// သေတမ်းစာ UTF-8 ကူးပြောင်း Windows-1251,ဒေတာဘေ့စ်သို့ရေးရန်ပြင်ဆင်ပါ
// ပထမ ဦး ဆုံးကိုသုံးပါ iconv ပေြာင်း UTF-8 ရောက်လာ Windows-1251,နောက်တဖန်အသုံးပြုပါ convert_cyr_string encoding ကိုချိန်ညှိပါ
$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();
?>

ဒေတာဘေ့စကိုဖတ်ရှုပြီးနောက် encoding နှင့်ပြောင်းလဲခြင်း

 <?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,အဆင်ပြေရှေ့ဆက် display ကို
$win1251_string = $row['text_column'];
$utf8_string = iconv("Windows-1251", "UTF-8//IGNORE", convert_cyr_string($win1251_string, 'w', 'w'));

echo $utf8_string;
?>

စစ်ဆင်ရေးကျွမ်းကျင်မှုဖြည့်စွက်ခွဲခြမ်းစိတ်ဖြာ

  1. Database ဇာတ်ကောင် set ကိုအတည်ပြုပါ ဒေတာဘေ့စ်နှင့်စားပွဲများ၏ characters configurations configurations configuration ကိုအတည်ပြုရန် SQL ထုတ်ပြန်ချက်များကိုသုံးပါ။

  2. ပေါင်းစည်းထားသော encoding နှင့်ပြောင်းလဲခြင်း Tool <br> <br> Cyronv သို့မဟုတ် MB_ConVert_encoding ကို Convert_Cyr_String သည် Cyrillic encoding ပြောင်းလဲခြင်းကိုအာရုံစိုက်သော်လည်းအထွေထွေ Utf-8 နှင့်အခြား encoding ပြောင်းလဲခြင်းများအတွက်အထွေထွေအထွေထွေဖြစ်သည်။

  3. ကျိုးကြောင်းဆီလျော်သောပြောင်းလဲခြင်းအမိန့်ကိုစီစဉ်ပါ ရှုပ်ထွေးသော encoding ပြောင်းလဲခြင်းအတွက် ICONV သို့မဟုတ် MB_COCVERT_ENCOCOTING ကို အဓိကပြောင်းလဲခြင်းအဖြစ်အသုံးပြုရန်အကြံပြုသည်။

  4. အပြောင်းအလဲနဲ့ပြောင်းလဲခြင်းပျက်ကွက်ခြင်း ပြောင်းလဲခြင်းကိုအသုံးပြုခြင်းကိုအသုံးပြုသောအခါပရိုဂရမ်အမှားကိုရှောင်ရှားရန် ( "လျစ်လျူရှုခြင်း" ) ကိုအသုံးပြုပါ။

  5. ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါ CHARTS set ကိုသတ်မှတ်ပါ Mysql အတွက် charset = CP1251 ကဲ့သို့သော charset = CP1251 ကဲ့သို့သော charset = CP1251 ကဲ့သို့သော charset = CP1251 ကဲ့သို့သော characters များပါ 0 င်ရန်အကြံပြုသည်။

အကျဉ်းချုပ်

Convert_Cyr_String သည် Cyrillic encoding commoding ပြောင်းလဲခြင်း ကိုကိုင်တွယ်ရာတွင်ရိုးရိုးရှင်းရှင်းထိရောက်သောကိရိယာတစ်ခုဖြစ်သည် ဤကိရိယာများကိုကျိုးကြောင်းဆီလျော်စွာပေါင်းစပ်ပြီးဒေတာဘေ့စ်ဇာတ်ကောင်ကိုသတ်မှတ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်၏စာဖတ်ခြင်းနှင့်ရေးသားခြင်းသည်စာဖတ်ခြင်းနှင့်ရေးသားခြင်းအတွင်းတွင်အခြေခံကျသည်။

encoding တသမတ်တည်းကိုတသမတ်တည်းထားပါ, ဒေတာများသည်သဘာဝကျအောင်ရှင်းရှင်းလင်းလင်းနှင့်မှန်ကန်လိမ့်မည်။ အသုံးပြုသူအတွေ့အကြုံသည်တိုးတက်လာလိမ့်မည်။


 <?php
// နမူနာ:မှUTF-8ပေြာင်းရောက်လာWindows-1251ဒေတာဘေ့စ်သို့ရေးပါ,再读取ပေြာင်း回UTF-8
function saveStringToDb(PDO $pdo, string $utf8_string) {
    // Transcoding: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'];
    // Transcoding:Windows-1251 -> UTF-8
    $utf8_string = iconv("Windows-1251", "UTF-8//IGNORE", convert_cyr_string($win1251_string, 'w', 'w'));

    return $utf8_string;
}
?>