이 str
각 UTF-8 바이트 "진짜"문자열의 하나 개 유니 코드 문자가 보인다. 예를 들어 문자 "ä"(UTF-8 표현은 C3 A4
)는 두 유니 코드 문자 "Ã"= U+00C3
및 "¤"= U+00A4
으로 저장됩니다.
"입력측"에서이 문제를 해결하는 것이 좋습니다. 가능하지 않은 경우, 다음과 같은 트릭은 한 str
의 모든 문자가 범위 U+0000 .. U+00FF
에있는 것처럼 작동합니다
let str = "Stavsnäs"
if let data = str.dataUsingEncoding(NSISOLatin1StringEncoding) {
if let fixed = NSString(data: data, encoding: NSUTF8StringEncoding) {
println(fixed) // Stavsnäs
}
}
그것은 NSISOLatin1StringEncoding
정확히 바이트 00 .. FF
에 유니 코드 문자 U+0000 .. U+00FF
매핑 사실을 사용합니다. 따라서 "¤¤"는 바이트 C3 A4
으로 변환되고이 바이트는 UTF-8로 해석되어 다시 유니 코드로 변환됩니다.
나는 스위프트를 사용하지 않았지만 이런 종류의 문제는 인코딩과 관련이 있습니다. ISO-8859-1에서 유니 코드로 변환하는 솔루션을 찾아보십시오. –
문자열 "Stavsnäs"는 어디에서 왔습니까? 문자열을 만들 때 이전 시점에서 문제를 수정하는 것이 좋습니다. –
API에서 온다 나는 제어 할 수 없다 ... : / – Oscar