首頁 > 後端開發 > php教程 > 記php和java中英文字節長度和編碼關係

記php和java中英文字節長度和編碼關係

WBOY
發布: 2016-07-29 08:56:49
原創
919 人瀏覽過

1.PHP

PHP其實跟C語言一樣,採用ASCII,一個char佔1個位元組,在GBK編碼,一個英文佔1個位元組,一個中文佔2個位元組。然而在UTF-8編碼下,一個英文還是佔1個字節,但一個中文是佔3-4個位元組(一般都是3個位元組),這通常會給你獲取字串的字長或者字串截取帶來麻煩。例如:

<?php
$str = "我爱你Iloveyou";
echo strlen($str); //utf8下是17,GBK下是14,但如果问你$str的字长是多少,或者让你显示前6个字,其余省略号表示,怎么办?
?>
登入後複製

以上的問題網路上可以找到答案,最簡單就是使用擴充函式庫,用mb_substr函數來截取。

2.Java

java中的一個char是2個位元組。 java採用unicode,2個位元組來表示一個字符,​​一個中文或英文字符的unicode編碼都佔2個字節,但如果採用其他編碼方式,一個字符佔用的字節數則各不相同。例如:

public class Test {
    public static void main(String[] args){
        String str = "我们aaaaa";
        int byte_len = str.getBytes().length;
        int len = str.length();
        System.out.println("字节长度为:" + byte_len);
        System.out.println("字符长度为:" + len);
    }
}
登入後複製

以上例子,在GBK輸出結果是:97,但無論是用什麼輸出編碼,用str.length()取得的字長都是一致的。 該方法傳回的是字串的字元數,無論是中文字符還是英文字符,都被看做是一個字符。

以上就介紹了記php和java中英文字節長度和編碼關係,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板