PHP에서는 중국 문자열을 다룰 때, 특히 일부 문자열 처리 기능을 사용할 때 일부 인코딩 문제가 발생할 수 있습니다. str_split 함수는 문자열을 분할하는 데 일반적으로 사용되는 기능이지만 멀티 파이트 문자 (예 : 중국어)를 처리 할 때 예상치 못한 결과를 생성 할 수 있습니다. 중국어 문자열을 올바르게 처리하기 위해 STR_SPLIT 및 MB_CONVERT_ENCODING을 사용하여 올바른 문자 인코딩을 보장하고 멍청하거나 잘린 문제를 피할 수 있습니다.
str_split 함수는 문자열 을 배열로 나누는데, 기본적으로 기본적으로 문자 길이로 분할되지만 단일 바이트 문자 세트를 기반으로하며 멀티 바이트 문자 (예 : 중국어)를 처리 할 때 예상대로 작동하지 않을 수 있습니다. 예를 들어:
$string = "안녕하세요,세계!";
$result = str_split($string, 3);
print_r($result);
산출:
Array
(
[0] => 너
[1] => 좋은,
[2] => 세계
[3] => 경계
[4] => !
)
보시다시피, str_split은 중국어를 캐릭터의 전체 바이트 길이로 나누지 않지만 3 바이트마다 한 번씩 나뉘어 일부 중국어가 분해됩니다.
한자를 올바르게 처리하려면 MB_Convert_Encoding 함수를 사용하여 문자열을 분할하기 전에 문자열의 인코딩 형식을 변환 할 수 있습니다. 이것의 목적은 문자열의 인코딩이 특히 다중 언어 환경에서 균일하고 문제를 피하는 것입니다.
예를 들어, 문자열 인코딩을 GBK 에서 UTF-8 으로 변환하려면 다음 코드를 사용할 수 있습니다.
$string = "안녕하세요,세계!";
$encodedString = mb_convert_encoding($string, 'UTF-8', 'GBK');
이 두 기능을 조합하여 중국 문자열을 분할 할 때 문자 인코딩을 올바르게 처리 할 수 있습니다. 다음은 전체 예입니다.
$string = "안녕하세요,세계!";
$encodedString = mb_convert_encoding($string, 'UTF-8', 'GBK'); // 인코딩을 변환하십시오
$result = str_split($encodedString, 3); // 캐릭터별로 나뉩니다
print_r($result);
실제 발전에서 우리는 종종 URL에서 한자를 다루어야합니다. 인코딩 오류를 피하려면 MB_CONVERT_ENCODING를 사용하여 URL의 중국어 부품을 적절한 인코딩 형식으로 변환하는 것이 좋습니다. 예를 들어, URL의 중국 부분을 UTF-8 인코딩으로 변환하여 요청에서 차단되지 않은지 확인할 수 있습니다.
한자가있는 URL이 있다고 가정합니다.
$url = "http://example.com/search?q=안녕하세요";
올바르게 처리하려면 URLENCODE를 사용하여 URL을 인코딩 한 다음 변환 할 수 있습니다.