cari

Rumah  >  Soal Jawab  >  teks badan

PHP menghadapi masalah ajaib yang disebabkan oleh aksara Cina yang kacau

Sebagai contoh

$data = 'Baidu�Tencent,Alibaba';

$data1 // ialah pembolehubah apabila dicetak, ia ialah 'Baidu�Tencent, Alibaba'

var_dump($data);
var_dump($data1);

Cetak hasil:
$data: rentetan(24) "Baidu�Tencent, Alibaba"
$data1:string(22) "Baidu�Tencent, Alibaba"

$keywordsData = json_encode($data, JSON_UNESCAPED_UNICODE);
$keywordsData1 = json_encode($data1, JSON_UNESCAPED_UNICODE);
var_dump($keywordsData);
var_dump($keywordsData1);

Cetak hasil:
kata kunciData:string(26) ""Baidu�Tencent, Alibaba""
keywordsData1:bool(false)

Kenapa ini? Saya ingin mendapatkan pembolehubah secara langsung, tetapi sekarang saya menghadapi masalah ini, sila jawab, terima kasih

大家讲道理大家讲道理2739 hari yang lalu947

membalas semua(2)saya akan balas

  • phpcn_u1582

    phpcn_u15822017-05-31 10:35:23

    $data:string(24) "百度�腾讯,阿里"  //这里8个字符,utf-8中的中文占3个字符,因此长度为24
    $data1:string(22) "百度�腾讯,阿里" //这里长度为 22,说明不是utf-8 而json_encode不支持非utf-8字符
    //输出错误看看
    var_dump(json_last_error());

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-31 10:35:23

    Dua pembolehubah adalah berbeza Walaupun kedua-duanya adalah rentetan, satu mempunyai panjang 24 dan satu lagi mempunyai panjang 22. Yang kedua jelas tidak dikodkan UTF8, jadi json_encode sudah tentu akan menjadi. salah. json_encode当然会错误。

    你可以先检测下字符串编码,mb_detect_encoding,然后再转成UTF8,mb_convert_encoding

    Anda boleh mengesan pengekodan rentetan dahulu, mb_detect_encoding dan kemudian menukarnya kepada UTF8, mb_convert_encoding. 🎜

    balas
    0
  • Batalbalas