>  기사  >  백엔드 개발  >  PHP 및 MYSQL_php 기술의 UTF8 중국어 정렬 샘플 코드

PHP 및 MYSQL_php 기술의 UTF8 중국어 정렬 샘플 코드

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

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 함수를 순서대로 사용할 수도 있습니다. 예를 들어

코드는 다음과 같습니다

코드 복사 코드는 다음과 같습니다.

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