所以这是一个问题。核心数据保存后的字符串长度变化
我有一个字符串
Белый Клык-0.fb2
的NSString方法长度返回16
保存在核心数据串之后(后端 - 源码)
的NSString方法长度返回17,但在视觉上串留相同
Белый Клык-0.fb2
明显的方法isEqualToString:r E打开NO
花费在实验了很多时间后,我很fugure指出,问题是这封信:
й
删除这封信解决问题。
但它让我疯狂,为什么这样的事情发生?
这里解决方法的作品,但不符合我:
- stringByReplacingPercentEscapesUsingEncoding: - 需要字符串转换权和数据库查询后
- 音译整串 - 有点儿本事
这里解决方法dosnt工作:
- stringWithUTF8String
- Converting escaped UTF8 characters back to their original form
请帮我明白是怎么回事用绳子后保存在核心数据。
而我有更优雅的解决方案吗?
这可能是[unicode normalization](http://unicode.org/reports/tr15/)相关问题。试试把你的coredata字符串与'[yourOriginalString decomposedStringWithCanonicalMapping]'进行比较,看看是否可行......(我已经测试过它,并且在你的例子中调用字符串时它会返回17的长度) – Alladinian 2013-02-25 08:57:39
谢谢!这真的很奏效,但我甚至没有听说过经典映射。你能添加一个答案吗?我标记它是多么正确的答案。 – Wert1go 2013-02-25 09:17:46
如果您确实需要保留包含组成字符的原始字符串,则必须将其存储为NSData:'[myString dataUsingEncoding:NSUTF16StringEncoding]' – 2013-02-25 09:39:45