Я просмотрел всю сеть только для того, чтобы найти способы сделать поиск нечувствительным к диакритическим знакам, но мне нужно обратное.
В моей ситуации мне нужно иметь возможность конкретно сравнивать символы с верхним индексом инижние точки (т. е. ȧ & ạ) и некоторые другие более распространенные символы (á, ã и т. д.), но эти буквы могут быть любыми (ṡ, ṛ, ṫ, ḍ, ṅ и т. д.).Желаемый результат будет работать так: если я ищу «a», я получаю только «a», а если я ищу «ȧ», я получаю «ȧ» только как результат, а не «a» вместе с ним (безточка).
Я прочитал, что мне нужно использовать utf8_bin, и я попытался изменить оба сопоставления полей, сопоставления таблиц и сопоставления базы данных, но безуспешно.Вот код:
// "sound" is being passed in by an AJAX call
$sound = $_POST['sound'];
$query = "SELECT * FROM sounds WHERE 'sound' = '$sound'";
$result = mysql_query($query);
// This is then sent back to my page.
Я также изучил COLLATE с небольшим успехом.Я, вероятно, неправильно понимаю его использование пробером:
// Attempting to covert the searched string into the utf8_bin format to match my db collations
$query = "SELECT * FROM sounds WHERE 'sound' = '$sound' COLLATE utf8_bin";
Когда я использую utf8_general_ci или utf8_unicode_ci, я получаю исключительный результат «a» или «ȧ», возвращая оба «ȧ» и «a».Однако, если я использую utf8_bin, я ничего не получаю при поиске любого из них.Я полагаю, это потому, что в моей базе данных при использовании utf8_bin это - "ṅ (PH)" (одна из моих записей) - преобразуется в это - "e1b98528504829".Так есть ли способ конвертировать мои поиски в тот же формат, прежде чем запрашивать их?Или просто лучший способ сделать эту работу?
Спасибо!