我在swift中有一个字符串:
let flag = "Cattì ò"
我正在尝试转换UTF8
符号。
我尝试过使用
stringByRemovingPercentEncoding
但注意到变化。如何正确转换符号?
答案 0 :(得分:0)
欢迎使用编码猜谜游戏!看起来像路径的某个地方,你的字符串没有得到正确的代码页。这是猜测它的一种方法:
let flag = "Cattì ò"
let encodings = [NSASCIIStringEncoding,
NSNEXTSTEPStringEncoding,
NSJapaneseEUCStringEncoding,
NSUTF8StringEncoding,
NSISOLatin1StringEncoding,
NSSymbolStringEncoding,
NSNonLossyASCIIStringEncoding,
NSShiftJISStringEncoding,
NSISOLatin2StringEncoding,
NSUnicodeStringEncoding,
NSWindowsCP1251StringEncoding,
NSWindowsCP1252StringEncoding,
NSWindowsCP1253StringEncoding,
NSWindowsCP1254StringEncoding,
NSWindowsCP1250StringEncoding,
NSISO2022JPStringEncoding,
NSMacOSRomanStringEncoding,
NSUTF16StringEncoding,
NSUTF16BigEndianStringEncoding,
NSUTF16LittleEndianStringEncoding,
NSUTF32StringEncoding,
NSUTF32BigEndianStringEncoding,
NSUTF32LittleEndianStringEncoding]
for encoding in encodings {
if let bytes = flag.cStringUsingEncoding(encoding),
flag_utf8 = String(CString: bytes, encoding: NSUTF8StringEncoding) {
print("\(encoding): \(flag_utf8)")
}
}
数组包含所有encodings that Cocoa supports。
从结果来看,您的字符串似乎是在NSISOLatin1StringEncoding
(a.k.a ISO-8859-1)中编码的,这是HTML 4.01的默认编码。这给出了UTF-8中的Cattì ò
,与您想要的结果不完全匹配,但是在所有代码页中最接近。
其他优秀的候选人是NSWindowsCP1252StringEncoding
和NSWindowsCP1254StringEncoding
,所以我建议您查看其他字符串。