>백엔드 개발 >PHP 튜토리얼 >PHP 및 MYSQL_php 기술의 UTF8 인코딩 중국어 정렬 예

PHP 및 MYSQL_php 기술의 UTF8 인코딩 중국어 정렬 예

WBOY
WBOY원래의
2016-05-16 20:34:201297검색

이 문서의 예는 PHP 및 MYSQL에서 UTF8 인코딩의 중국어 정렬 방법을 설명하며 참조용으로 모든 사람과 공유됩니다. 구체적인 구현 방법은 다음과 같습니다.

일반적으로 중국어에는 세 가지 정렬 방법이 있습니다.

1. 병음에 따라 정렬
2. 획에 따라 정렬
3. 부수에 따라 정렬합니다.

시스템의 기본 정렬 방법은 병음 정렬이며, 다음은 우리가 흔히 사용하는 병음 정렬입니다.

1. php 배열에 중국어 정렬을 사용해야 하는데 일반적으로 utf8 형식의 파일을 사용하므로 asort를 사용한 직접 정렬은 작동하지 않습니다. gbk와 gb2312를 사용할 수 있습니다. 이는 여러 형식의 인코딩과 관련이 있습니다. gbk 및 gb2312 자체의 인코딩은 병음으로 정렬됩니다.

코드 복사 코드는 다음과 같습니다.
function utf8_array_asort(&$array)
{
if(!isset($array) || !is_array($array))
{
false를 반환합니다.
}
foreach($k=>$v로 $배열)
{
$array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v);
}
분류($array);
foreach($k=>$v로 $배열)
{
$array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v);
}
true를 반환합니다.
}

2. MySQL에서는 필드를 정렬하고 쿼리하는 경우가 많은데, 중국어로 정렬하고 검색할 때 한자의 정렬과 검색 결과가 잘못된 경우가 많습니다. 이러한 상황은 여러 버전의 MySQL에 존재합니다.

이 문제가 해결되지 않으면 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 함수를 순서대로 사용할 수도 있습니다. 예를 들어

코드 복사 코드는 다음과 같습니다.
CONVERT(chineseColumnName USING gbk)로 mytable 순서에서 * 선택 ;

이 기사가 모든 사람의 PHP MySQL 프로그래밍에 도움이 되기를 바랍니다.

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