<?xml version="1.0" encoding="utf-8"?>
<bug><id>34096</id><link>http://bugs.mysql.com/bug.php?id=34096</link><status>Can&#039;t repeat</status><category>Server: Charsets</category><sdesc>problem with cyrillic letter IO and letter case issue in utf8_general_ci</sdesc><ldesc>Better to view it on a wide screen.

It&#039;s all about cyrillic characters:
Ёё comparing to Ее and
Йй comparing to Ии

characters (first code is cp1251):
е 0xE5 = U+0435 : CYRILLIC SMALL LETTER IE
Е 0xC5 = U+0415 : CYRILLIC CAPITAL LETTER IE
ё 0xB8 = U+0451 : CYRILLIC SMALL LETTER IO
Ё 0xA8 = U+0401 : CYRILLIC CAPITAL LETTER IO
и 0xE8 = U+0438 : CYRILLIC SMALL LETTER I
И 0xC8 = U+0418 : CYRILLIC CAPITAL LETTER I
й 0xE9 = U+0439 : CYRILLIC SMALL LETTER SHORT I
Й 0xC9 = U+0419 : CYRILLIC CAPITAL LETTER SHORT I 

from http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT

I compare several collations in cp1251 and utf8 character sets.
SQL SELECT looks like (cp1251 hex codes):
select &#039;ё&#039; = &#039;Ё&#039;, &#039;й&#039; = &#039;Й&#039;, &#039;z&#039; = &#039;Z&#039;, &#039;е&#039; = &#039;ё&#039;, &#039;и&#039; = &#039;й&#039;, &#039;И&#039; = &#039;Й&#039;, &#039;е&#039; &gt;= &#039;ё&#039;, &#039;Е&#039; = &#039;Ё&#039;, &#039;и&#039; &gt; &#039;й&#039;, &#039;Ё&#039; &gt; &#039;ё&#039;, &#039;Й&#039; &gt; &#039;й&#039;, &#039;Б&#039; &gt; &#039;б&#039;, &#039;L&#039; &gt; &#039;l&#039;;
        B8    A8   E9    C9   7A    5A   E5    B8   E8    E9   C8    C9   E5     B8   C5    A8   E8    E9   A8    B8   C9    E9   C1    E1   4C    6C

Compare case sensitive collations
---------------------------------

mysql&gt; set names cp1251 collate cp1251_general_cs;
mysql&gt; select &#039;ё&#039; = &#039;Ё&#039;, &#039;й&#039; = &#039;Й&#039;, &#039;z&#039; = &#039;Z&#039;, &#039;е&#039; = &#039;ё&#039;, &#039;и&#039; = &#039;й&#039;, &#039;И&#039; = &#039;Й&#039;, &#039;е&#039; &gt;= &#039;ё&#039;, &#039;Е&#039; = &#039;Ё&#039;, &#039;и&#039; &gt; &#039;й&#039;, &#039;Ё&#039; &gt; &#039;ё&#039;, &#039;Й&#039; &gt; &#039;й&#039;, &#039;Б&#039; &gt; &#039;б&#039;, &#039;L&#039; &gt; &#039;l&#039;;
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
| &#039;ё&#039; = &#039;Ё&#039; | &#039;й&#039; = &#039;Й&#039; | &#039;z&#039; = &#039;Z&#039; | &#039;е&#039; = &#039;ё&#039; | &#039;и&#039; = &#039;й&#039; | &#039;И&#039; = &#039;Й&#039; | &#039;е&#039; &gt;= &#039;ё&#039; | &#039;Е&#039; = &#039;Ё&#039; | &#039;и&#039; &gt; &#039;й&#039; | &#039;Ё&#039; &gt; &#039;ё&#039; | &#039;Й&#039; &gt; &#039;й&#039; | &#039;Б&#039; &gt; &#039;б&#039; | &#039;L&#039; &gt; &#039;l&#039; |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
|         0 |         0 |         0 |         0 |         0 |         0 |          0 |         0 |         0 |         0 |         0 |         0 |         0 |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
Correct

mysql&gt; set names utf8 collate utf8_bin;
mysql&gt; select &#039;ё&#039; = &#039;Ё&#039;, &#039;й&#039; = &#039;Й&#039;, &#039;z&#039; = &#039;Z&#039;, &#039;е&#039; = &#039;ё&#039;, &#039;и&#039; = &#039;й&#039;, &#039;И&#039; = &#039;Й&#039;, &#039;е&#039; &gt;= &#039;ё&#039;, &#039;Е&#039; = &#039;Ё&#039;, &#039;и&#039; &gt; &#039;й&#039;, &#039;Ё&#039; &gt; &#039;ё&#039;, &#039;Й&#039; &gt; &#039;й&#039;, &#039;Б&#039; &gt; &#039;б&#039;, &#039;L&#039; &gt; &#039;l&#039;;
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
| &#039;ё&#039; = &#039;Ё&#039; | &#039;й&#039; = &#039;Й&#039; | &#039;z&#039; = &#039;Z&#039; | &#039;е&#039; = &#039;ё&#039; | &#039;и&#039; = &#039;й&#039; | &#039;И&#039; = &#039;Й&#039; | &#039;е&#039; &gt;= &#039;ё&#039; | &#039;Е&#039; = &#039;Ё&#039; | &#039;и&#039; &gt; &#039;й&#039; | &#039;Ё&#039; &gt; &#039;ё&#039; | &#039;Й&#039; &gt; &#039;й&#039; | &#039;Б&#039; &gt; &#039;б&#039; | &#039;L&#039; &gt; &#039;l&#039; |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
|         0 |         0 |         0 |         0 |         0 |         0 |          1 |         0 |         0 |         0 |         0 |         0 |         0 |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
Wrong!

The 1 (true value) in second result is a error! It has to be 0 (false) (sorting issue)


Compare case insensitive collations
-----------------------------------

mysql&gt; set names cp1251 collate cp1251_general_ci;
mysql&gt; select &#039;ё&#039; = &#039;Ё&#039;, &#039;й&#039; = &#039;Й&#039;, &#039;z&#039; = &#039;Z&#039;, &#039;е&#039; = &#039;ё&#039;, &#039;и&#039; = &#039;й&#039;, &#039;И&#039; = &#039;Й&#039;, &#039;е&#039; &gt;= &#039;ё&#039;, &#039;Е&#039; = &#039;Ё&#039;, &#039;и&#039; &gt; &#039;й&#039;, &#039;Ё&#039; &gt; &#039;ё&#039;, &#039;Й&#039; &gt; &#039;й&#039;, &#039;Б&#039; &gt; &#039;б&#039;, &#039;L&#039; &gt; &#039;l&#039;;
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
| &#039;ё&#039; = &#039;Ё&#039; | &#039;й&#039; = &#039;Й&#039; | &#039;z&#039; = &#039;Z&#039; | &#039;е&#039; = &#039;ё&#039; | &#039;и&#039; = &#039;й&#039; | &#039;И&#039; = &#039;Й&#039; | &#039;е&#039; &gt;= &#039;ё&#039; | &#039;Е&#039; = &#039;Ё&#039; | &#039;и&#039; &gt; &#039;й&#039; | &#039;Ё&#039; &gt; &#039;ё&#039; | &#039;Й&#039; &gt; &#039;й&#039; | &#039;Б&#039; &gt; &#039;б&#039; | &#039;L&#039; &gt; &#039;l&#039; |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
|         1 |         1 |         1 |         0 |         0 |         0 |          0 |         0 |         0 |         0 |         0 |         0 |         0 |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
Correct

mysql&gt; set names utf8 collate utf8_general_ci;
mysql&gt; select &#039;ё&#039; = &#039;Ё&#039;, &#039;й&#039; = &#039;Й&#039;, &#039;z&#039; = &#039;Z&#039;, &#039;е&#039; = &#039;ё&#039;, &#039;и&#039; = &#039;й&#039;, &#039;И&#039; = &#039;Й&#039;, &#039;е&#039; &gt;= &#039;ё&#039;, &#039;Е&#039; = &#039;Ё&#039;, &#039;и&#039; &gt; &#039;й&#039;, &#039;Ё&#039; &gt; &#039;ё&#039;, &#039;Й&#039; &gt; &#039;й&#039;, &#039;Б&#039; &gt; &#039;б&#039;, &#039;L&#039; &gt; &#039;l&#039;;
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
| &#039;ё&#039; = &#039;Ё&#039; | &#039;й&#039; = &#039;Й&#039; | &#039;z&#039; = &#039;Z&#039; | &#039;е&#039; = &#039;ё&#039; | &#039;и&#039; = &#039;й&#039; | &#039;И&#039; = &#039;Й&#039; | &#039;е&#039; &gt;= &#039;ё&#039; | &#039;Е&#039; = &#039;Ё&#039; | &#039;и&#039; &gt; &#039;й&#039; | &#039;Ё&#039; &gt; &#039;ё&#039; | &#039;Й&#039; &gt; &#039;й&#039; | &#039;Б&#039; &gt; &#039;б&#039; | &#039;L&#039; &gt; &#039;l&#039; |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
|         0 |         0 |         1 |         0 |         0 |         0 |          1 |         0 |         0 |         0 |         0 |         0 |         0 |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
Wrong in columns (starting from 1): 1, 2, 7. First 3 columns have to be 1 and the rest - 0

mysql&gt; set names utf8 collate utf8_unicode_ci;
mysql&gt; select &#039;ё&#039; = &#039;Ё&#039;, &#039;й&#039; = &#039;Й&#039;, &#039;z&#039; = &#039;Z&#039;, &#039;е&#039; = &#039;ё&#039;, &#039;и&#039; = &#039;й&#039;, &#039;И&#039; = &#039;Й&#039;, &#039;е&#039; &gt;= &#039;ё&#039;, &#039;Е&#039; = &#039;Ё&#039;, &#039;и&#039; &gt; &#039;й&#039;, &#039;Ё&#039; &gt; &#039;ё&#039;, &#039;Й&#039; &gt; &#039;й&#039;, &#039;Б&#039; &gt; &#039;б&#039;, &#039;L&#039; &gt; &#039;l&#039;;
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
| &#039;ё&#039; = &#039;Ё&#039; | &#039;й&#039; = &#039;Й&#039; | &#039;z&#039; = &#039;Z&#039; | &#039;е&#039; = &#039;ё&#039; | &#039;и&#039; = &#039;й&#039; | &#039;И&#039; = &#039;Й&#039; | &#039;е&#039; &gt;= &#039;ё&#039; | &#039;Е&#039; = &#039;Ё&#039; | &#039;и&#039; &gt; &#039;й&#039; | &#039;Ё&#039; &gt; &#039;ё&#039; | &#039;Й&#039; &gt; &#039;й&#039; | &#039;Б&#039; &gt; &#039;б&#039; | &#039;L&#039; &gt; &#039;l&#039; |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
|         1 |         1 |         1 |         1 |         1 |         1 |          1 |         1 |         0 |         0 |         0 |         0 |         0 |
+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+-----------+
Wrong in columns (starting from 1): 4, 5, 6, 7, 8. First 3 columns have to be 1 and the rest - 0</ldesc><reporter>1859175</reporter><submitted>1201472808</submitted><modified>1201557774</modified><version>5.0.32-Debian_7etch1-log</version><os>Any</os><cpu_arch>Any</cpu_arch><severity>S3 (Non-critical)</severity></bug>