在處理中文字串的時候,如何處理�這個字元

來源:互聯網
上載者:User
在處理一些爬下來的網頁時,經常發現會存在 這個字元。嘗試各種轉編碼,無果。

比如:

每個人對工� �的使用往往各有偏好

對應的原文是這個:

每個人對工具的使用往往各有偏好

如何處理這樣的情況,這又是由於什麼問題產生的呢?

如果需要資料,貌似這個可以看看

http://apps.timwhitlock.info/unicode/inspect?s=%EF%BF%BD

回複內容:

在處理一些爬下來的網頁時,經常發現會存在這個字元。嘗試各種轉編碼,無果。

比如:

每個人對工� �的使用往往各有偏好

對應的原文是這個:

每個人對工具的使用往往各有偏好

如何處理這樣的情況,這又是由於什麼問題產生的呢?

如果需要資料,貌似這個可以看看

http://apps.timwhitlock.info/unicode/inspect?s=%EF%BF%BD

從某編碼向Unicode編碼轉化時,如果沒有對應的字元,得到的將是Unicode的代碼“\uffffd”,也就是這個字元。
這個是你的爬蟲根本不識別原網頁的編碼格式(ASCII或者GB2312等)和壓縮格式(Gzip等),全都無腦轉成UTF-8字串導致的,出現這個字元說明轉換失敗,資料已經丟失了,這個字元本身並沒什麼實際意義。

如果是PHP的話,這個可能是因為substring導致的。解決辦法是安裝mb_string模組,使用mb_*系列函數。

有時候一個漢字被截掉一部分會產生這個符號,比如一個兩位元組的漢子被截掉了一位元組,怎麼處理我也不知道。。。
你這個應該是‘具’字被分成兩部分了。。

public static function utf8Substr($str, $from, $len){    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.        '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',        '$1',$str);}

這個問題我估計是因為這段文字在換行的時候被截斷了,你扒文字的時候注意看看分行符號有沒有把一個文字分成兩半

可能它就是亂碼
你可以用瀏覽器正常訪問一下試試

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.