>백엔드 개발 >PHP 튜토리얼 >중국어와 영어 바이트 길이와 PHP 및 Java 인코딩 간의 관계를 기억하세요.

중국어와 영어 바이트 길이와 PHP 및 Java 인코딩 간의 관계를 기억하세요.

WBOY
WBOY원래의
2016-07-29 08:56:49925검색

1.PHP

PHP는 사실 C언어와 동일하며, 는 ASCII를 사용하고, 문자는 GBK에서 1바이트를 차지합니다. 인코딩은 영어 하나가 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 A 문자는 2바이트입니다. 자바는 유니코드를 사용하는데, 한 문자를 표현하는데 2바이트가 사용됩니다. 중국어나 영어 문자의 유니코드 인코딩은 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.