记php和java中英文字节长度和编码关系
程序员文章站
2024-02-08 08:06:28
...
1.PHP
以上的问题网上可以找到答案,最简单就是使用扩展库,用mb_substr函数来截取。
以上例子,在GBK输出结果是:9和7,但在UTF-8下输出结果是:11和7,即无论用什么编码,用str.length()获取的字长都是一致的。该方法返回的是字符串的字符数,无论是中文字符还是英文字符,都被看做是一个字符。
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教程有兴趣的朋友有所帮助。
下一篇: Oracle字符串截取和拼接应用