2017-05-09 95 views
2

我們的PHP頁面只是一個由元描述中的中文字符組成的UTF-8網頁。Whatsapp分享PHP鏈接體驗中文描述殘破的中文字符

我不知道爲什麼當有人試圖將鏈接分享到WhatsApp時,它顯示了破碎的字母。

但我分享它發現它沒有損壞(正常)。

背後有什麼可能的原因?我們增加了兩項:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

header('Content-Type: text/html; charset=UTF-8'); 

有人有任何線索?謝謝!

==========

enter image description here

+0

重複http://stackoverflow.com/questions/279170/utf-8-all-the-way-through –

+0

我不知道爲什麼,但[這說](https://richpreview.com/? url = http%3A%2F%2Fentrepreneur-times.com%2Fl%2Ftch%2Fblog%2F%3Fid%3D12)找不到您的元描述標記。也許它是由於UTF- *問題而錯誤生成的? – sgr12

+0

更改你的字符集,doc級別希望能夠做到這一點,可能要看起來更遠......等等,等等......語言屬性!會有幫助嗎? – admcfajn

回答

1

正在使用的軟件(假設博客軟件)不能很好地處理UTF-8編碼的內容,導致非UTF8輸出到瀏覽器。

這並不是說博客軟件在所有內容操作中都會有缺陷,更多的情況正好相反,它只在某些內容操作中存在缺陷。但它發生了,我已經看到了那裏的每一頁上,是足以讓a simple UTF-8 check失敗:

$ curl -s 'http://entrepreneur-times.com/l/tch/blog/?id=12' \ 
    | php -r 'var_dump(preg_match("~~u", file_get_contents("php://stdin")));' 
bool(false) 

問題是描述文本(用於描述和OG HTML meta標籤:描述)的產生。該軟件的這一部分沒有考慮內容的Unicode UTF-8編碼,只是在一些二進制長度切斷(很可能,我沒有看到代碼)。這種切割方式打破了UTF-8的輸出。

此修復程序是爲了消除軟件中的缺陷。

+0

@Vanson Wing Leung:Stackoverflow的例子在這裏:https://stackoverflow.com/a/9087570/367456 - 如果你需要更多的控制檢查[PHPs * intl * library](http://php.net/manual/ EN/book.intl.php)。 – hakre

+0

修好了,謝謝!道德:在嘗試修剪字符串時總是使用mb_substr而不是substr –

+0

@VansonWingLeung:這是一個基於DOMText的變體:https://3v4l.org/YOvKK#v500 - 只是表明有多種方法可以實現此目的。 XML擴展通常是可用的。 – hakre

0

我試着用支架打開它僅支持UTF-8,它給了一個錯誤。當你說它是utf-8並不意味着它是utf-8。源代碼也應該輸出或寫入utf-8。我會檢查生成頁面的代碼是否也是utf-8或輸出utf-8。