FgetCsv () သည် PHP မှ PHP မှ CSV ဖိုင်များကိုအတန်းဖြင့်ဖတ်ရန်နှင့်ဒေတာတစ်ခုစီကိုခင်းကျင်းရန်နေရာတစ်ခုအဖြစ်သို့ပြန်ပို့သည်။ သို့သော်၎င်းသည်အလိုအလျောက် transcode မသွားပါ။ GBK သို့မဟုတ် Big5 encoding တွင်သိမ်းဆည်းထားသောဖိုင်ကိုသင်ဖတ်ရှုရန်ကြိုးစားပါကသင်၏ PHP ပတ်ဝန်းကျင်သို့မဟုတ်ဝက်ဘ်စာမျက်နှာ output သည် UTF-8 ဖြစ်သည်။ ထို့နောက် output သည်အမှိုက်များပေါ်လာလိမ့်မည်။
ကွန်ရက်ဆောင်ပြ problem နာကိုဖြေရှင်းရန်ကျွန်ုပ်တို့သည်ဒေတာတစ်ခုစီကိုစာဖတ်ပြီးနောက်မူရင်း encoding (များသောအားဖြင့် UTF-8) မှပစ်မှတ် encoding နှင့် target encoding သို့ပြောင်းရန်လိုအပ်သည်။ ၎င်းကို PHP ၏ MB_ConVert_encoding () သို့မဟုတ် iconv () လုပ်ဆောင်ချက်များကိုဖြင့်ပြုလုပ်နိုင်သည်။
ကျွန်ုပ်တို့တွင် UTF-8 တွင်မှန်ကန်စွာပြသရန်အတွက် GBK-encoded CSV ဖိုင်ရှိသည်ဆိုပါစို့, အောက်ပါကုဒ်ကိုသုံးနိုင်သည်။
<Code> <? PHP $ filename = "data.csv"; // CSV ဖိုင်သည် GBK encoded ဖြစ်သည်ဟုယူဆပါ
$ လက်ကိုင် = fopen ($ filename, r ");
($ လက်ကိုင်! == fiss) လျှင်
စဉ် (($ ဒေတာ = fgetcsv)! == fiss) {
// ကော်လံတစ်ခုချင်းစီကို GBK မှ UTF-8 သို့ပြောင်းပါ
foreach ($ ဒေတာ As & $ field) {
$ field = mb_convertert_encoding ($ field, "utf-8", "gbk");
}
unset ($ လယ်ကွင်း); // ကိုးကားပြ issues နာများကိုရှောင်ကြဉ်ပါ
print_r($data); // transcoded အကြောင်းအရာ output ကို
}
fclose($handle);
} အခြား
ECHO "ဖိုင်ကိုဖွင့ ်. မရပါ။ $ filename";
}
>
</ code>
ဖိုင်၏မူလ encoding ကိုသင်မသေချာပါက MB_Detect_encoding () ကို အလိုအလျောက်စစ်ဆေးရန်သင်အသုံးပြုနိုင်သည်။
<Code> <? PHP $ filename = "data.csv";
$ လက်ကိုင် = fopen ($ filename, r ");
($ လက်ကိုင်! == fiss) လျှင်
$ firstline = fgets ($ လက်ကိုင်);
rewind ($ လက်ကိုင်); // ပထမစာကြောင်းကိုဖတ်ပြီးနောက် Pointer သည်ဖိုင်၏အစသို့ပြန်သွားသည်
$ encoding = mb_detect_encoding ($ firllence, "Utf-8", "Big5", "Big5", "SJIs"],
လျှင် (! $ encoding) {
$ encoding = "gbk"; // ၎င်းကိုရှာဖွေတွေ့ရှိလို့မရဘူးဆိုရင် GBK ကိုပုံမှန်အားဖြင့်အသုံးပြုသည်
}
while (($data = fgetcsv($handle)) !== false) {
foreach ($data as &$field) {
$field = mb_convert_encoding($field, "UTF-8", $encoding);
}
unset($field);
print_r($data);
}
fclose($handle);
} အခြား
ECHO "ဖိုင်ကိုဖွင့ ်. မရပါ";
}
>
</ code>
အသုံးပြုသူမှတင်ထားသော CSV ဖိုင်သည်မတူညီသော operating systems (Windows, Mac, Linux) မှလာနိုင်သည်။ သို့မဟုတ်၎င်းသည်မတူညီသောဆော့ဖ်ဝဲများ (Excel, WPS) မှကယ်တင်ခြင်းသို့ရောက်နိုင်သည်။ upload လုပ်ပြီးနောက် encoding ကိုတညီတညွတ်တည်းဖြစ်အောင်လုပ်ရန်အကြံပြုသည်, ထို့နောက်၎င်းကို fgetcsv () ဖြင့်ဖတ်ပါ။
uploaded CSV ဖိုင်ကိုယာယီဖိုင်တစ်ခုအဖြစ်သိမ်းဆည်းခြင်းနှင့်စည်းလုံးမှုအပြောင်းအလဲအတွက်အထက်ပါအလိုအလျောက်ရှာဖွေရေး + transcoding method ကို အသုံးပြု. သိမ်းဆည်းထားသော CSV ဖိုင်ကိုသိမ်းဆည်းရန်သင်စဉ်းစားနိုင်သည်။
<Code> <? PHP if (isset($_FILES['csvfile']) && $_FILES['csvfile']['error'] === UPLOAD_ERR_OK) {
$ tmpfile = $ _files ['CSVFILE'] ['TMP_NAME'];
$ လက်ကိုင် = fopen ($ tmpfile, "r");
if ($handle !== false) {
$firstLine = fgets($handle);
rewind($handle);
$encoding = mb_detect_encoding($firstLine, ["GBK", "UTF-8", "BIG5", "SJIS"], true);
if (!$encoding) {
$encoding = "GBK";
}
while (($data = fgetcsv($handle)) !== false) {
foreach ($data as &$field) {
$field = mb_convert_encoding($field, "UTF-8", $encoding);
}
unset($field);
print_r($data);
}
fclose($handle);
} else {
echo "တင်ထားသောဖိုင်များကိုဖတ်။ မရပါ";
}
} အခြား
Echo "upload မအောင်မြင်ပါသို့မဟုတ်ဖိုင်မမှန်ကန်ပါ";
}
>
</ code>