
mb_strtoupper 함수는 한글을 대문자로 변환하는 데 문제가 있습니다.
이 문제는 한글의 유니코드 코드 포인트가 4바이트 이상인 경우에 발생합니다. PHP는 기본적으로 UTF-8 인코딩을 사용하며, 한글의 유니코드 코드 포인트가 4바이트 이상인 경우를 처리하지 못하므로 대문자로 변환하지 못합니다.
해결 방법은 두 가지가 있습니다.
1. mb_strtoupper 함수를 사용할 때, UTF-8 인코딩을 사용하지 않도록 설정합니다. 예를 들어, `mb_strtoupper($str, 'EUC-KR');`과 같이 EUC-KR 인코딩을 사용할 수 있습니다.
2. 한글의 유니코드 코드 포인트가 4바이트 이상인 경우를 처리하기 위해, mb_strtoupper 함수를 사용하기 전에, 한글의 유니코드 코드 포인트를 4바이트 이하로 변환하는 함수를 사용할 수 있습니다. 예를 들어, `mb_convert_encoding($str, 'EUC-KR', 'UTF-8');`과 같이 EUC-KR 인코딩으로 변환할 수 있습니다.
또한, PHP 7.2 이상부터는 mb_strtoupper 함수가 한글을 대문자로 변환하는 데 문제가 없으므로, PHP 버전을 업그레이드하는 것도 좋은 해결 방법입니다.
2025-07-11 04:39