1. In the PHP array needs to be sorted in Chinese, but the general use of UTF8 format files, directly with the Asort sort. You can use GBK and gb2312. This is related to the encoding of several formats. The encoding of GBK and gb2312 itself is sorted by pinyin.
The code is as follows
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. In MySQL, we often sort a query on a field, but in Chinese sorting and search, the Chinese character sorting and search results are often wrong. This situation exists in many versions of MySQL (www.jb51.net).
If this problem is not resolved, then MySQL will not be able to actually handle Chinese. The reason for this problem is that MySQL is case-insensitive when querying strings, and when it comes to MySQL, the ISO-8859 character set is used as the default character set, so it is caused by the case conversion of Chinese encoded characters in the comparison process.
Workaround:
Add the "binary" property to the field containing Chinese as a binary comparison, such as changing "name char (10)" to "name char" binary.
If you use the source code to compile MySQL, you can compile MySQL using the--WITH--CHARSET=GBK parameter, so MySQL will directly support Chinese lookup and sorting (the default is Latin1). You can also use EXTRA-CHARSETS=GB2312,GBK to add multiple character sets.
If you do not want to modify the table structure or recompile MySQL, you can also use the CONVERT function in the order by part of the query statement. Like what
The code is as follows
Copy Code code as follows:
SELECT * FROM MyTable ORDER by CONVERT (Chinesecolumnname USING GBK);