Можно ли автоматически преобразовать обе альтернативы «дефиса», показанные ниже, в «дефис» ascii с использованием строк Swift и кодирования, не прибегая к конкретным экземплярам вызовов replacingOccurrencesOfWith
?
.replacingOccurrences(of: "—", with: "-") // Replace "e2 80 94" (wide hyphen) with a normal hyphen
.replacingOccurrences(of: "‐", with: "-") // Replace "e2 80 90" (narrow hyphen) with a normal hyphen
В настоящее время я использую функцию replacingOccurrencesOfWith
для преобразования определенных символов, которые вызывают сбой моей программы, когда я пытаюсь вставить охватывающие строки в свою базу данных MySQL. Поскольку таких проблемных символов много (каждый из них выглядит как 3-байтовый юникод), мне в конечном итоге понадобится гигантский список replacingOccurrencesOfWith
вызовов, чтобы обработать их все. Поэтому ищу что-то более эффективное.
Что касается «автоматического», мне интересно, есть ли функция Swift String, которая будет понижать символ юникода до приблизительно правильного символа ascii? Например; «ń» -> «n», «ó» -> «o», и «ü» -> «u», и «-» -> «-», «-» -> «-».
Причина, по которой мне нужно преобразовать эти символы, заключается в том, что MySqlSwiftNative возвращает ошибки MySQL, когда я пытаюсь вставить их в свою базу данных, хотя я уже установил DEFAULT CHARACTER SET utf8mb4
и COLLATE utf8mb4_unicode_ci
для своей базы данных/таблиц и могу напрямую вставлять символы в базу данных с помощью phpMyAdmin.
MySqlSwiftNative (из GitHub/mcorega) — работающий собственный Swift MySQL API, который, к сожалению, не имеет деятельности примерно через два года.
replacingOccurrences
будет работать для длинных и коротких дефисов, так зачем вам их преобразовывать? - person Joakim Danielson   schedule 02.09.2019replacingOccurrencesOfWith
. - person gone   schedule 02.09.2019try con.exec("SET NAMES utf8")
? - person Amadan   schedule 03.09.2019