Swift 3字节unicode字符能否自动转换为ascii

Swift 3字节unicode字符能否自动转换为ascii,swift,string,unicode,transliteration,Swift,String,Unicode,Transliteration,是否可以使用Swift字符串和编码将下面显示的两个“连字符”选项自动转换为ascii“连字符”,而无需借助于调用replacingOccurrencesOfWith .replacingOccurrences(of: "—", with: "-") // Replace "e2 80 94" (wide hyphen) with a normal hyphen .replacingOccurrences(of: "‐", with: "-") // Replace "e2 80 90"

是否可以使用Swift字符串和编码将下面显示的两个“连字符”选项自动转换为ascii“连字符”,而无需借助于调用
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
我目前正在使用
replacingoccurrencesofith
函数转换某些字符,当我试图将包含字符串的字符串插入MySQL数据库时,这些字符会导致程序崩溃。由于有很多这样的有问题的字符(所有字符似乎都是3字节unicode),我最终需要一个巨大的
replacingoccurrencessofwith
调用列表来处理它们。所以我在寻找更有效的方法

关于“自动”,我想知道是否有一个Swift字符串函数可以将unicode字符降级为近似正确的ascii字符?例如“ń”->“n”、“ó”->“o”和“ü”->“u”以及“--”>“-”、“-”-”、“-”>“-”

我需要转换这些字符的原因是,当我尝试将mysqlswifftnative插入数据库时,mysqlswifftnative返回MySQL错误,尽管我已经为我的数据库/表设置了
默认字符集utf8mb4
整理utf8mb4\u unicode\u ci
,并且可以使用phpMyAdmin直接将字符插入数据库


-可操作的本机Swift MySQL API,遗憾的是,它已经两年没有任何活动了。

您可以对ASCII进行“字符串转换”:

let text = "ń—ó‐ü"
let trans = text.applyingTransform(StringTransform(rawValue: "Latin-ASCII"), reverse: false)!
print(trans) // n-o-u


print(Array(text.unicodeScalars))
// ["\u{0144}", "\u{2014}", "\u{00F3}", "\u{2010}", "\u{00FC}"]

print(Array(trans.unicodeScalars))
// ["n", "-", "o", "-", "u"]
有关详细信息,请参阅


您可以将“字符串转换”为ASCII:

let text = "ń—ó‐ü"
let trans = text.applyingTransform(StringTransform(rawValue: "Latin-ASCII"), reverse: false)!
print(trans) // n-o-u


print(Array(text.unicodeScalars))
// ["\u{0144}", "\u{2014}", "\u{00F3}", "\u{2010}", "\u{00FC}"]

print(Array(trans.unicodeScalars))
// ["n", "-", "o", "-", "u"]
有关详细信息,请参阅


  • “自动”是什么意思?不运行任何代码?关于你的代码,你试过了吗?你到底遇到了什么问题?
    replacingOccurrences
    适用于长连字符和短连字符,那么你为什么需要转换它们呢?请参阅更新操作,其中阐明了我正在尝试的操作;使用避免数百次的
    重播。您是否尝试过con.exec(“SET NAMES utf8”)
    ?您说的“自动”是什么意思?不运行任何代码?关于你的代码,你试过了吗?你到底遇到了什么问题?
    replacingOccurrences
    适用于长连字符和短连字符,那么你为什么需要转换它们呢?请参阅更新操作,其中阐明了我正在尝试的操作;避免数百次使用重复出现。您是否尝试过con.exec(“设置名称utf8”)?