欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

记php和java中英文字节长度和编码关系

程序员文章站 2022-04-01 20:23:25
...
1.PHP

PHP其实跟C语言一样,采用ASCII,一个char占1个字节,在GBK编码,一个英文占1个字节,一个中文占2个字节。然而在UTF-8编码下,一个英文还是占1个字节,但一个中文是占3-4个字节(一般都是3个字节),这通常会给你获取字符串的字长或者字符串截取带来麻烦。比如:


以上的问题网上可以找到答案,最简单就是使用扩展库,用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输出结果是:9和7,但在UTF-8下输出结果是:11和7,即无论用什么编码,用str.length()获取的字长都是一致的。该方法返回的是字符串的字符数,无论是中文字符还是英文字符,都被看做是一个字符。

以上就介绍了记php和java中英文字节长度和编码关系,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。