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
ဒေတာဘေ့စ်၏ဇာတ်ကောင် settings သည်ယူနီဖောင်းမဟုတ်ဘဲ PHP သည်စာဖတ်ခြင်းနှင့်အရေးအသားအတွင်းအဆင်သင့်မဖြစ်သေးပါကသိုလှောင်ထားသည့်အချက်အလက်များကိုအမှန်တကယ်ပြသသည့်အချက်အလက်များနှင့်ကိုက်ညီမှုရှိစေပြီး, ဥပမာအားဖြင့်:
ဒေတာဘေ့စ်ကို UTF8 မှ encoded သည်, သို့သော်အက်ပလီကေးရှင်းသည် Windows-1251 ကို အသုံးပြု. စာဖြင့်ရေးသားသည့်အခါ concled code ပေါ်လာလိမ့်မည်။
ဒေတာဘေ့စ်ကိုဖတ်သည့်အခါ application သည် encoding ကို dataBase ကိုဖတ်ရှုရာတွင်ပြောင်းလဲခြင်းမပြုပါ။
တသမတ်တည်း encoding သေချာစေရန် carbled code ကိုရှောင်ရှားရန်သော့ချက်ဖြစ်ပါတယ်။
သင်အသုံးပြုနေသောဒေတာဘေ့စ်သည် Windows-1251 encoding ရှိ Cyrillic ဇာတ်ကောင်အချက်အလက်များကိုသိုလှောင်ခြင်းနှင့် PHP scripts process strings ကို UTF-8 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();
?>
<?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;
?>
Database ဇာတ်ကောင် set ကိုအတည်ပြုပါ ဒေတာဘေ့စ်နှင့်စားပွဲများ၏ characters configurations configurations configuration ကိုအတည်ပြုရန် SQL ထုတ်ပြန်ချက်များကိုသုံးပါ။
ပေါင်းစည်းထားသော encoding နှင့်ပြောင်းလဲခြင်း Tool <br> <br> Cyronv သို့မဟုတ် MB_ConVert_encoding ကို Convert_Cyr_String သည် Cyrillic encoding ပြောင်းလဲခြင်းကိုအာရုံစိုက်သော်လည်းအထွေထွေ Utf-8 နှင့်အခြား encoding ပြောင်းလဲခြင်းများအတွက်အထွေထွေအထွေထွေဖြစ်သည်။
ကျိုးကြောင်းဆီလျော်သောပြောင်းလဲခြင်းအမိန့်ကိုစီစဉ်ပါ ရှုပ်ထွေးသော encoding ပြောင်းလဲခြင်းအတွက် ICONV သို့မဟုတ် MB_COCVERT_ENCOCOTING ကို အဓိကပြောင်းလဲခြင်းအဖြစ်အသုံးပြုရန်အကြံပြုသည်။
အပြောင်းအလဲနဲ့ပြောင်းလဲခြင်းပျက်ကွက်ခြင်း ပြောင်းလဲခြင်းကိုအသုံးပြုခြင်းကိုအသုံးပြုသောအခါပရိုဂရမ်အမှားကိုရှောင်ရှားရန် ( "လျစ်လျူရှုခြင်း" ) ကိုအသုံးပြုပါ။
ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါ 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;
}
?>