1. php 배열에 중국어 정렬을 사용해야 하는데 일반적으로 utf8 형식의 파일을 사용하므로 asort를 사용한 직접 정렬은 작동하지 않습니다. gbk와 gb2312를 사용할 수 있습니다. 이는 여러 형식의 인코딩과 관련이 있습니다. gbk 및 gb2312 자체의 인코딩은 병음으로 정렬됩니다.
코드는 다음과 같습니다
function utf8_array_asort(&$array) { if(!isset($array) || !is_array($array)) { return false; } foreach($array as $k=>$v) { $array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v); } asort($array); foreach($array as $k=>$v) { $array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v); } return true; }
2. MySQL에서는 필드를 정렬하고 쿼리하는 경우가 많은데, 중국어로 정렬하고 검색할 때 한자의 정렬과 검색 결과가 잘못된 경우가 많습니다. 이러한 상황은 여러 버전의 MySQL(www.jb51.net)에 존재합니다.
이 문제가 해결되지 않으면 MySQL은 실제로 중국어를 처리할 수 없게 됩니다. 이 문제가 발생하는 이유는 MySQL이 문자열을 쿼리할 때 대소문자를 구분하지 않기 때문입니다. MySQL을 컴파일할 때 일반적으로 ISO-8859 문자 집합이 기본 문자 집합으로 사용되므로 비교 과정에서 중국어 코드 문자의 대소문자 변환이 발생합니다. .이 현상.
해결책:
중국어가 포함된 필드의 경우 "binary" 특성을 추가하여 이진 비교를 수행합니다. 예를 들어 "name char(10)"를 "name char(10)binary"로 변경합니다.
소스 코드를 사용하여 MySQL을 컴파일하는 경우 MySQL을 컴파일할 때 --with--charset=gbk 매개변수를 사용할 수 있으므로 MySQL은 중국어 검색 및 정렬(기본값은 latin1)을 직접 지원합니다. extra-charsets=gb2312,gbk를 사용하여 여러 문자 집합을 추가할 수도 있습니다.
테이블 구조를 수정하거나 MySQL을 다시 컴파일하고 싶지 않은 경우에는 쿼리문의 일부로 CONVERT 함수를 순서대로 사용할 수도 있습니다. 예를 들어
코드는 다음과 같습니다