Heim > Backend-Entwicklung > PHP-Tutorial > 记php和java中英文字节长度和编码关系

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

WBOY
Freigeben: 2016-07-29 08:56:49
Original
930 Leute haben es durchsucht

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个字,其余省略号表示,怎么办?
?>
Nach dem Login kopieren

以上的问题网上可以找到答案,最简单就是使用扩展库,用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);
    }
}
Nach dem Login kopieren

以上例子,在GBK输出结果是:9和7,但在UTF-8下输出结果是:11和7,即无论用什么编码,用str.length()获取的字长都是一致的。该方法返回的是字符串的字符数,无论是中文字符还是英文字符,都被看做是一个字符。

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage