簡體   English   中英

utf8_encode 不編碼/轉換字符

[英]utf8_encode not encoding/converting character

我正在嘗試使用 utf8_encode 來顯示一些重音字符(為了將它們放入 json 中),但由於某種原因它似乎失敗了,我不明白為什么。 這是我通過 php 測試器運行的測試數據:

    $data = '{"14446":"discreci\u00f3n","14450":"prudencia","14461":"experiencia","14491":"vida"}';
    $data = preg_replace('|u00([A-Fa-f0-9][A-Fa-f0-9])|', 'x{$1}', $data);
    echo $data;
    echo "\r\n\r\n";
    $data = preg_replace('/"\d*":/','',$data); 
    echo $data;
    echo "\r\n\r\n";
    $data = preg_replace('/[{}"?!]/','',$data);
    echo $data;
    echo "\r\n\r\n";
    $data_array = explode(",", $data); 
        
        foreach ($data_array as $data) {
            echo $data;
            echo "\r\n\r\n";
        }
        
    echo utf8_encode($data_array[0]);

    echo "\r\n\r\n";
    echo utf8_encode("discreci\xf3n");

哪個輸出:

{"14446":"discreci\\x{f3}n","14450":"prudencia","14461":"experiencia","14491":"vida"}

{"discreci\\x{f3}n","prudencia","experiencia","vida"}

Disreci\\xf3n,prudencia,experiencia,vida

離散\\xf3n

審慎

體驗

維達

離散\\xf3n

自由裁量權

如您所見,如果我直接輸入它,它會轉換它,但如果它作為變量接收它,它不會轉換它,即使它被引號包圍,例如:

foreach ($data_array as $data) {
                $data = '"' . $data . '"';
                echo $data;
                echo "\r\n\r\n";
            }

也不轉換它。

所以 - 我做錯了什么?

您創建一個包含\\xf3的字符串,這些都是 ASCII 字符。 如果你想ó使用 stripcslashes 來激活嵌入的\\

 echo utf8_encode(stripcslashes($data_array[0]));

但另一方面

foreach( json_decode($data,1) as $v )  echo $v ,"\n\n" ;

在原始$data (preg_replace 之前)上工作得很好,並且支持所有 Unicode 而不僅僅是一個子集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM