tôi sử dụng mã này trong ứng dụng của mình. vừa tìm thấy là không đúng khi so sánh Hàn QuốcNSString isEqualToString: không hoạt động
for (NSString *lang in array){
NSString *currentLang = [[MLLanguage sharedInstance] lang];
BOOL flag = [lang isEqualToString:currentLang];
NSLog(@"\n'%@' isEqual to '%@', %d\n%@\n%@", lang, currentLang, flag?1:0, [lang dataUsingEncoding:NSUTF8StringEncoding], [currentLang dataUsingEncoding:NSUTF8StringEncoding]);
kết quả sai: hai từ Hàn Quốc so như khác nhau
2012-06-19 21:16:52.681 Motilink[10188:11903] -[MLSettingLanguageViewController loadDownloadedData][Line 50]
'English' isEqual to '한국어', 0
<456e676c 697368>
<ed959cea b5adec96 b4>
2012-06-19 21:16:52.682 Motilink[10188:11903] -[MLSettingLanguageViewController loadDownloadedData][Line 50]
'한국어' isEqual to '한국어', 0
<e18492e1 85a1e186 abe18480 e185aee1 86a8e184 8be185a5>
<ed959cea b5adec96 b4>
2012-06-19 21:16:52.682 Motilink[10188:11903] -[MLSettingLanguageViewController loadDownloadedData][Line 50]
'中国语' isEqual to '한국어', 0
<e4b8ade5 9bbde8af ad>
<ed959cea b5adec96 b4>
đúng một:
2012-06-19 21:35:00.908 Motilink[10188:11903] -[MLSettingLanguageViewController loadDownloadedData][Line 50]
'English' isEqual to '中国语', 0
<456e676c 697368>
<e4b8ade5 9bbde8af ad>
2012-06-19 21:35:00.909 Motilink[10188:11903] -[MLSettingLanguageViewController loadDownloadedData][Line 50]
'한국어' isEqual to '中国语', 0
<e18492e1 85a1e186 abe18480 e185aee1 86a8e184 8be185a5>
<e4b8ade5 9bbde8af ad>
2012-06-19 21:35:00.909 Motilink[10188:11903] -[MLSettingLanguageViewController loadDownloadedData][Line 50]
'中国语' isEqual to '中国语', 1
<e4b8ade5 9bbde8af ad>
<e4b8ade5 9bbde8af ad>
có vẻ như rằng: NSString sử dụng mã hóa bởi chính nó,
tiếng Anh chỉ sử dụng 7 byte như ascii
Trung Quốc sử dụng sử dụng 9 byte có lẽ utf8
nhưng bằng tiếng Hàn, nó xuất hiện hai kết quả khác nhau,
không ai biết điều này
Liệu -lang trả về một NSString? Nếu không, thì chúng sẽ không bao giờ bằng nhau. Có lẽ bạn nên bỏ cả hai vào MLLanguage và thử sử dụng toán tử isEqual :. –
là đối tượng NSString, bạn có thể xem nhật ký, chỉ có tiếng Hàn là không chính xác –
'한국어' isEqual to '한국어', 0 . đối tượng lang là dòng đầu tiên. có lẽ đối tượng lang không phải là utf8 NSString –