如何知道字符串是mb字符串?所以我們使用mb_strlen而不是strlen?關於mb字符串和PHP中的普通字符串
1
A
回答
7
你需要總是知道字符串的編碼方式,以及它是否是多字節編碼。畢竟,您需要將字符串的編碼作爲第二個參數傳遞給mb_strlen()
以獲得可靠的結果,對吧?
傳入數據的編碼將總是以某種方式定義 - 處理表單數據時的頁面編碼;處理數據庫數據時的數據庫連接和表的編碼;等等。這是你的工作,建立流程的方式,你總是知道什麼是在什麼編碼在哪裏。
唯一的例外是當您處理任何不會正確聲明其內容編碼的第三方數據。那時(並且只有這樣)才能使用嗅探功能,如mb-detect-encoding()
和同事。請記住,這些函數非常容易出錯,並且只能給你一個有教育意義的猜測,即字符串的編碼方式,而不是可靠的信息。
1
是不是mb_check_encoding
或mb_detect_encoding
應該用於那個?
2
否。字符串是一個字符串。無法確定它是否包含多個字節字符。
你可以用mb_detect_encoding()來猜測,但是你的里程可能會隨字符集和編碼而變化。例如,UTF-8有一個非常獨特的模式,你會得到非常好的結果。但其他編碼,如GB2312,真的很難察覺。
如果您正在設計一個新的協議或系統,最好保留編碼信息。
2
比較strlen和mb_strlen結果,如果它們不匹配,則該字符串包含多字節字符。
相關問題
- 1. 普通字符串
- 2. JSP解碼的字符串不等於普通字符串
- 3. 單獨的html編碼字符串和普通字符串
- 4. 二進制字符串,字節字符串,unicode字符串和普通字符串(str)之間的區別
- 5. 關於字符串,字符串
- 6. 如何從普通字符串中生成JSON字符串?
- 7. Mysql的真正轉義字符串與普通字符串
- 8. 爲什麼字符串從文件中獲取不等於普通字符串?
- 9. 如何將Flask Markup字符串轉換爲普通字符串
- 10. 如何將這些字符串轉換爲普通字符串?
- 11. HexaDecimal字符串轉換爲普通字符串
- 12. 將sha1字符串解碼爲普通字符串
- 13. NLTK:原始字符串轉換爲普通字符串
- 14. 如何將帶有Unicode字符的字符串轉換爲普通字符串?
- 15. PHP從字符串中的字符串
- 16. PHP - URI中的通配符字符串
- 17. 字符串中的PHP通配符
- 18. PHP和字符串
- 19. T-SQL/PHP顯示字符串類似於字符串中的
- 20. 如何通過Scala的地圖[字符串,地圖[字符串,字符串]]以普通JavaScript對象
- 21. PHP字符的字符串
- 22. 將SQL數據庫中的字符串與「普通」字符串進行比較
- 23. 不能JSON字符串轉換爲普通字符串數組中的Java
- 24. 將dbus.String轉換爲普通字符串
- 25. 字符串轉換爲普通文本
- 26. 轉換普通字符串JSON
- 27. PHP - 字符串的子字符串
- 28. 關於字符串比較
- 29. 關於提取字符串
- 30. 關於字符串操作