phputf8漢字個數,pythonutf8漢字占幾個字節

本文目錄一覽:

PHP問題,我用PHP寫了一個留言板,用的是UTF-8的編碼,但是為什麼輸入一個漢字等於3個字母

漢字在UTF-8下是佔3個字節

mb_strlen ( string str [, string encoding] )

獲取的是有幾個字符,將漢字都當成一個字符來計算

那數字和英文也都是一個字符來計算

mb_strlen($_POST[‘xx’])3

就是字符數少於3,也就是你自己說的意思:不管是數字還是漢字都要少於3個

PHP如何獲取中文字符串長度 utf8

PHP對中文字符串的處理一直困擾於剛剛接觸PHP開發的新手程序員。下面簡要的剖析一下PHP對中文字符串長度的處理:

PHP自帶的函數如strlen()、mb_strlen()都是通過計算字符串所佔字節數來統計字符串長度的,一個英文字符佔1字節。例:

$enStr = ‘Hello,China!’;

echo strlen($enStr); // 輸出:12

而中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔字節也有差異。

gbk編碼下每個中文字符所佔字節為2,例:

$zhStr = ‘您好,中國!’;

echo strlen($zhStr); // 輸出:12

utf-8編碼下每個中文字符所佔字節為3,例:

$zhStr = ‘您好,中國!’;

echo strlen($zhStr); // 輸出:18

那麼如何計算這組中文字符串的長度呢?有人可能會說gbk下獲取中文字符串長度除以2,utf-8編碼下除以3不就行了嗎?但是您要考慮字符串並不老實,99%的情況會以中英混合的情況出現。

這是WordPress中的一段代碼,主要思想就是先用正則將字符串分解為個體單元,然後再計算單元的個數即字符串的長度,代碼如下(只能處理utf-8編碼下的字符串):

$zhStr = ‘您好,中國!’;

$str = ‘Hello,中國!’;

// 計算中文字符串長度

function utf8_strlen($string = null) {

// 將字符串分解為單元

preg_match_all(“/./us”, $string, $match);

// 返回單元個數

return count($match[0]);

}

echo utf8_strlen($zhStr); // 輸出:6

echo utf8_strlen($str); // 輸出:9

php strlen utf8一個中文算3個字節嗎?

utf8是變長編碼, 不一定是3字節, 可能是2~3, 當然ASCII字符還是1字節.gbk也是變長編碼, 非ASCII的2字節, ASCII還是1字節.這兩個編碼對於非ASCII字符, 都是多字節的, 並且多字節字符每個字節都是127的, 也就是負數(最高位是1).另外, PHP里的strlen不是依靠判斷字符串結尾的, 因為PHP是腳本語言, 它的字符串和C++的string是一樣的, 將存儲的字節個數當作字符串長度.另外, PHP里想數數有多少個字節用strlen, 想數數有多少個字符, 用mb系列函數, 自己去了解一下.還有些需求, 比如字符串匹配查找之類的, gbk是存在雙字節匹配問題的, 兩個連續漢字的中間2個字節可能被誤認為其他字符, 所以不能用strstr之類的字節匹配函數(PHP里是純字節匹配的, 不關心), 但utf-8是可以的, 它不會有類似的衝突, 另外最好的做法當然還是用mb系列, 安全可靠, 而且還支持猜編碼功能.

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/150645.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-09 02:13
下一篇 2024-11-09 02:13

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 進擊的漢字拆字窗

    進擊的漢字拆字窗是一款非常有用的中文工具,它可以幫助人們更好的學習漢字,了解漢字的含義,以及更好的了解漢字在中文中的運用和意義。 一、功能介紹 進擊的漢字拆字窗主要有以下幾個功能:…

    編程 2025-04-29
  • Python計算中文字符個數

    本文將從多個方面對Python計算中文字符個數進行詳細的闡述,包括字符串長度計算、正則表達式統計和模塊使用方法等內容。 一、字符串長度計算 在Python中,計算字符串長度是非常容…

    編程 2025-04-29
  • Python實現統計100以內能被7整除的數字個數

    本文將從以下幾個方面詳細闡述如何使用Python來實現統計100以內能被7整除的數字個數。具體內容包括: 一、range函數 Python中的range函數是用來生成一個數字序列的…

    編程 2025-04-28
  • Python中的字節類數據

    Python作為其中一個最廣泛使用的編程語言之一,提供了多種數據類型來幫助開發者實現各種需求。在這些數據類型中,字節類數據(bytes)是一個被廣泛使用的類型。本文將會從各個方面詳…

    編程 2025-04-28
  • Python計算個數函數用法介紹

    本文將對Python中計算個數的函數進行詳細講解,包括內置函數、常用模塊和自定義函數,並給出完整的代碼示例。 一、內置函數 Python內置了多個計算個數的函數,包括len()、c…

    編程 2025-04-28
  • Python3個數中的最大數的查找方法

    Python是一種高級編程語言,擁有易學易用、可移植性強、高效極速等優勢,被廣泛應用於數據分析、Web開發、人工智能等多個領域。在Python中,查找給定數列表中的最大數是一個非常…

    編程 2025-04-28
  • Python中一次輸入兩個數

    在Python中,一次輸入兩個數是一種常見的需求。本文將從多個方面闡述Python中一次輸入兩個數的實現方法。 一、input函數 Python中的input函數可以接受用戶輸入的…

    編程 2025-04-28
  • Python一次性輸入10個數如何實現?

    Python提供了多種方法進行輸入,可以手動逐個輸入,也可以一次性輸入多個數。在需要輸入大量數據時,一次性輸入十個數就非常方便。下面我們從多個方面來講解如何一次性輸入10個數。 一…

    編程 2025-04-28
  • 如何在Python中輸出漢字和數字

    本文將從多個方面詳細介紹如何在Python中輸出漢字和數字,並提供代碼示例。 一、輸出漢字 要在Python中輸出漢字,需要先確保Python默認編碼是utf-8,這可以通過在代碼…

    編程 2025-04-28

發表回復

登錄後才能評論